elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Duda funciones programación en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda funciones programación en C  (Leído 4,220 veces)
LUCHADOR97

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Duda funciones programación en C
« en: 10 Diciembre 2016, 18:36 pm »

Hola, tengo el siguiente ejercicio de funciones:


// Se desea realizar las siguientes tareas con matrices:

// 1.Almacenar una matriz de orden nxm introducida desde teclado. (n y m se pedirán por teclado). El usuario debe introducir dos matrices,llamando dos veces a misma función.

// 2.Imprimir en pantalla una matriz. Se llamará dos veces a la función para mostrar ambas matrices.

// 3.Calcular la suma de ambas matrices (tienen que coincidir sus nº de filas y sus no de columnas)

// 4.Calcular el mínimo de la diagonal secundaria para la matriz que elija el usuario. La función recibirá como parámetro la matriz correspondiente.

// 5.OPCIONAL: Hallar el producto de dos matrices (pij = ai1b1j + ai2b2j + ai3b3j + . . . + ainbnj). Para ello, primero hay que comprobar si se pueden multiplicar, es decir, el número de columnas de la primera matriz tiene que coincidir con el número de filas de la segunda.

// Se pide: Construir un programa en C que haciendo uso de llamadas funciones resuelva las areas anteriores. Además el programa debe mostrarle al usuario un menú con las distintas opciones. Dicho menú también estará implementado en una función.

Lo tengo que hacer con funciones y aunque sé que tengo mil errores en el código y me faltan cosas, quisiera que me dijeran los errores principales que ven, cómo se haría el return con varios valores,muchas gracias:

Código
  1. #include<stdio.h>
  2.  
  3. #define N 4
  4.  
  5.  
  6. int matrices (int A[N][N],int B[N][N]); {
  7.  
  8. int i,j,suma,minimo;
  9. minimo= B[i][j]
  10.  
  11.  
  12. for (i=0;i<N;i++){
  13. for (j=0;j<N;j++){
  14. printf ("Introduzca un número:");
  15. scanf ("%d",&A[i][j]);
  16. }
  17. }
  18.  
  19. for (i=0;i<N;i++){
  20. for (j=0;j<N;j++){
  21. printf ("Introduzca un numero:");
  22. scanf ("%d",&B[i][j]);
  23.  
  24.  
  25. }
  26. }
  27.  
  28. for (i=0; i<N;i++){
  29. for (j=0;j<N;j++){
  30.  
  31. Suma[i][j]= A[i][j] + B[i][j];
  32. }
  33. }
  34. printf ("la suma es :\n");
  35.  
  36. for (i=0;i<N;i++){
  37. for (j=0;j<N;j++){
  38. if (i+j=n+1 < minimo)
  39. minimo = i+j=n+1
  40. printf ("El numero es :\n");
  41.  
  42. return (suma,i+j=n+1)
  43.  
  44. }
  45. }
  46. printf ("la suma es :\n");
  47.  
  48.  
  49. int main (void) {
  50.  
  51. int x,y;
  52.  
  53.  
  54. printf ("La suma es %d\t", suma (x,y);
  55.  
  56. printf ("El numero es %d\n", minimo);
  57. }
  58.  
  59.  


Mod: Los códigos deben ir en etiquetas GeSHi


« Última modificación: 10 Diciembre 2016, 19:24 pm por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda funciones programación en C
« Respuesta #1 en: 10 Diciembre 2016, 19:27 pm »

usa identaciones para que el codigo sea legible -.-

linea 8: suma es un numero entero
linea31: tratas suma como un array

linea 41:  a que juegas en ese return... el return es tipo int, solo retornará un valor, no entiendo la coma

recomiendo tutorial de C sobre manejo de array... los arrays no los pasas simplemente con return


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
LUCHADOR97

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Duda funciones programación en C
« Respuesta #2 en: 10 Diciembre 2016, 20:02 pm »

Ok gracias, me surgió otra duda, las funciones de cada apartado se hacen por separado o todos tienen que estar en una sola función.

Gracias
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda funciones programación en C
« Respuesta #3 en: 10 Diciembre 2016, 20:04 pm »

tu separa en funciones todo lo que quieras XD

normalmente el criterio es organización del código (legibilidad) o reuso del codigo
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
LUCHADOR97

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Duda funciones programación en C
« Respuesta #4 en: 10 Diciembre 2016, 23:40 pm »

Hola, ¿Cómo lo planterías? especialmente "1.Almacenar una matriz de orden nxm introducida desde teclado. (n y m se pedirán por teclado). El usuario debe introducir dos matrices,llamando dos veces a misma función.

// 2.Imprimir en pantalla una matriz. Se llamará dos veces a la función para mostrar ambas matrices."
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda funciones programación en C
« Respuesta #5 en: 11 Diciembre 2016, 00:14 am »

cuando pasas array se pasan por referencia siempre


te sobra un punto y coma luego del nombre de la función que te causará errores


si alteras un array que pases, quedará alterado ya


es decir


Código
  1. #define n 4
  2.  
  3. #include <stdio.h>
  4.  
  5.  
  6. void suma(int a[n], int b[n], int r[n]){
  7. int i;
  8. for(i=0; i<n; i++){
  9. r[i] = a[i]+b[i];
  10. }
  11. }
  12.  
  13. int main(void) {
  14. int a[n], b[n], r[n];
  15.  
  16. a[0] = 1;
  17. a[1] = 3;
  18. a[2] = 5;
  19. a[3] = 7;
  20.  
  21. b[0] = 2;
  22. b[1] = 4;
  23. b[2] = 6;
  24. b[3] = 8;
  25.  
  26. suma(a,b,r);
  27. int i;
  28. for(i=0; i<n; i++){
  29. printf("%d\n", r[i]);
  30. }
  31.  
  32. return 0;
  33. }
  34.  
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
LUCHADOR97

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Duda funciones programación en C
« Respuesta #6 en: 16 Diciembre 2016, 01:40 am »

Hola, he hecho el ejercicio completo de nuevo, me gustaría saber si hago bien las llamadas:


Código
  1. #include<stdio.h>
  2.  
  3. #define N 50
  4. #define M 50
  5.  
  6.  
  7.  
  8. void matrices (int mat[N][M],int F,int C){
  9.  
  10.  
  11.  
  12.  
  13. for (i=0;i<F;i++){
  14.   for (j=0;j<C;j++){
  15.   printf ("Introduzca un numero":);
  16.    scanf ("%d",&mat[i][j]);
  17.  
  18.  
  19. }
  20. }
  21.  
  22. }
  23.  
  24. void mostrar (int matriz [N][M],int z,int v) {
  25.  int i,j;
  26.  for (i=0;i<z;i++){
  27.    for (j=0;j<v;j++){
  28.      printf ("%d\n",mat[i][j]);
  29.  
  30. }
  31. }
  32.  
  33. }
  34.  
  35. void suma (int A[N][M],int B[N][M],int c,int d,int p,int q,int sum[N][M]) {
  36.  
  37. int i,j;
  38. if (c==p && d==q);
  39.   for (i=0;i<c;i++){
  40.    for (j=0;j<d;j++){
  41.  
  42.  
  43.      sum[i][j] = A[i][j] + B[i][j];
  44.  
  45. }
  46. printf ("\n");
  47. }
  48.  
  49.  else {
  50. printf ("las matrices no tienen la misma dimensión, por lo que no se pueden sumar:\n");}
  51. }
  52.  
  53.  
  54.  
  55.  
  56. void MINIMO (int matrices A[N][M], int matrices B[N][M],int e,int f,int h, int g){
  57. int i,j;
  58.  
  59. if (e==f) {
  60. printf ("el minimo de la diagonal secundaria de la matriz A:\n");
  61.     MIN = A[0,e-1];
  62.  
  63.      for (i=0;i<e;i++){
  64.         if (MIN>A[i,e-1-i]){
  65.            MIN = A[i,e-1-i]
  66. }
  67.  
  68. }
  69.  printf ("%d\n",MIN);
  70. }          
  71.  
  72. else {printf ("La matriz A no es cuadrada. Por tanto, no se puede calcular la diagonal\n"); }
  73.  
  74. if (h==g) {
  75.  
  76.   printf ("el minimo de la diagonal secundaria de la matriz B es: \n");
  77.   MIN= B[0,h-1]
  78.  
  79. for (i=0;i<h;i++){
  80.         if (MIN>B[i,h-1-i]){
  81.             MIN = B[i,h-1-i];
  82. }
  83.  
  84. }
  85.  printf ("%d\n", MIN);
  86. }
  87.  
  88.  else {printf ("La matriz B no es cuadrada. Por tanto, no se puede calcular la diagonal\n");}
  89. }
  90.  
  91. void multiplicacion (int mat1[N][M],int mat2[N][M],int a, int b, int c, int d) {
  92. int i,j,k;
  93. int multiplicacion [a][d], resultado ;
  94.  if (b==c) {
  95.    for (i=0;i<b;i++){
  96.      for (j=0;j<c;j++){
  97.  
  98.        {resultado = 0;
  99.         for (k=0;k<d;k++) {
  100.           resultado+= (matrizA[i][k] * matrizB[k][j]);
  101.             multiplicacion[i][j]=resultado;
  102.               }}}
  103. printf ("El resultado de la multiplicación es:\n");
  104.    for (i=0; i<a; i++)
  105.        {
  106.            for (j=0; j<b; j++)
  107.            {
  108.                printf ("%d ", multiplicacion[i][j]);
  109.            }
  110.            printf ("\n");
  111.        }
  112.    printf ("\n");
  113.    }
  114.  
  115.  
  116. void menu (void)
  117. {printf ("ELIJA UNA OPCION:\n");
  118. printf ("0- SALIR\n");
  119. scanf ("%d", &opcion1);
  120. printf ("1- MOSTRAR MATRICES\n");
  121. scanf ("%d", &opcion2);
  122. printf ("2- SUMAR MATRICES\n");
  123. scanf ("%d", &opcion3);
  124. printf ("4- CALCULAR MINIMO DE LA SEGUNDA DIAGONAL DE AMBAS MATRICES\n");
  125. scanf ("%d", &opcion4);
  126. printf ("5- MULTIPLICAR MATRICES \n");
  127. scanf ("%d", &opcion5);
  128. printf ("\n");
  129. }
  130.  
  131. int main (void) {
  132.  
  133. int B[N][M];
  134. int C[N][M];
  135. int Sum[N][M];
  136.  
  137.  
  138. int i,j,x,y,w,t;
  139.  
  140.  
  141. leer matrices (B,x,y);
  142. printf ("Introduzca el número de filas:%d\n");
  143. scanf ("%d",&x);
  144. printf ("Introduzca el número de columnas:%d\n");
  145. scanf ("%d",&y);
  146.  
  147.  
  148.  
  149.  
  150. leer matrices (C,w,t);
  151.  
  152. printf ("Introduzca el número de filas:%d\n");
  153. scanf ("%d",&w);
  154. printf ("Introduzca el número de columnas:%d\n");
  155. scanf ("%d",&t);
  156.  
  157. suma (x=10, y=10);
  158.  
  159. }

Me interese está última parte, la del main, ¿hago correctamenta las llamadas a las otras funciones?

Gracias


Mod: Los códigos deben ir en etiquetas GeSHi
« Última modificación: 16 Diciembre 2016, 01:41 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda funciones programación en C
« Respuesta #7 en: 16 Diciembre 2016, 01:44 am »

Mod: Los códigos deben ir en etiquetas GeSHi


Código
  1. int main (void) {
  2.  
  3. int B[N][M];
  4. int C[N][M];
  5. int Sum[N][M];
  6.  
  7.  
  8. int i,j,x,y,w,t;
  9.  
  10.  
  11. leer matrices (B,x,y);
  12. printf ("Introduzca el número de filas:%d\n");
  13. scanf ("%d",&x);
  14. printf ("Introduzca el número de columnas:%d\n");
  15. scanf ("%d",&y);
  16.  
  17.  
  18.  
  19.  
  20. leer matrices (C,w,t);
  21.  
  22. printf ("Introduzca el número de filas:%d\n");
  23. scanf ("%d",&w);
  24. printf ("Introduzca el número de columnas:%d\n");
  25. scanf ("%d",&t);
  26.  
  27. suma (x=10, y=10);
  28.  
  29. }


leer matrices es un nombre de funcion invalido... primero debes leer las dimensiones antes de pasarlas
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con Funciones.
Programación C/C++
freecom4ever 3 2,255 Último mensaje 14 Marzo 2012, 19:52 pm
por Eternal Idol
funciones duda
Programación C/C++
ALONSOQ 5 2,670 Último mensaje 27 Julio 2012, 17:23 pm
por rir3760
Duda con funciones en C.
Programación C/C++
Danirs 6 3,253 Último mensaje 24 Octubre 2012, 02:21 am
por rir3760
Ayuda! Soy nuevo en programacion "C" Necesicito que me ayuden con FUNCIONES « 1 2 »
Programación C/C++
smdiegoarmando 11 4,396 Último mensaje 27 Enero 2013, 20:16 pm
por avesudra
Caso de programación en c++ utilizando funciones
Programación C/C++
jeff23 2 1,976 Último mensaje 10 Octubre 2015, 17:43 pm
por daryo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines