Autor
|
Tema: Duda funciones programación en C (Leído 4,761 veces)
|
LUCHADOR97
Desconectado
Mensajes: 4
|
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: #include<stdio.h> #define N 4 int matrices (int A[N][N],int B[N][N]); { int i,j,suma,minimo; minimo= B[i][j] for (i=0;i<N;i++){ for (j=0;j<N;j++){ printf ("Introduzca un número:"); } } for (i=0;i<N;i++){ for (j=0;j<N;j++){ printf ("Introduzca un numero:"); } } for (i=0; i<N;i++){ for (j=0;j<N;j++){ Suma[i][j]= A[i][j] + B[i][j]; } } for (i=0;i<N;i++){ for (j=0;j<N;j++){ if (i+j=n+1 < minimo) minimo = i+j=n+1 return (suma,i+j=n+1) } } int main (void) { int x,y; printf ("La suma es %d\t", suma (x ,y ); printf ("El numero es %d\n", minimo ); }
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
|
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
Mensajes: 4
|
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
|
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
Mensajes: 4
|
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
|
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 #define n 4 #include <stdio.h> void suma(int a[n], int b[n], int r[n]){ int i; for(i=0; i<n; i++){ r[i] = a[i]+b[i]; } } int main(void) { int a[n], b[n], r[n]; a[0] = 1; a[1] = 3; a[2] = 5; a[3] = 7; b[0] = 2; b[1] = 4; b[2] = 6; b[3] = 8; suma(a,b,r); int i; for(i=0; i<n; i++){ } return 0; }
|
|
|
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
Mensajes: 4
|
Hola, he hecho el ejercicio completo de nuevo, me gustaría saber si hago bien las llamadas: #include<stdio.h> #define N 50 #define M 50 void matrices (int mat[N][M],int F,int C){ for (i=0;i<F;i++){ for (j=0;j<C;j++){ printf ("Introduzca un numero":); scanf ("%d",&mat[i][j]); } } } void mostrar (int matriz [N][M],int z,int v) { int i,j; for (i=0;i<z;i++){ for (j=0;j<v;j++){ printf ("%d\n",mat[i][j]); } } } void suma (int A[N][M],int B[N][M],int c,int d,int p,int q,int sum[N][M]) { int i,j; if (c==p && d==q); for (i=0;i<c;i++){ for (j=0;j<d;j++){ sum[i][j] = A[i][j] + B[i][j]; } printf ("\n"); } else { printf ("las matrices no tienen la misma dimensión, por lo que no se pueden sumar:\n");} } void MINIMO (int matrices A[N][M], int matrices B[N][M],int e,int f,int h, int g){ int i,j; if (e==f) { printf ("el minimo de la diagonal secundaria de la matriz A:\n"); MIN = A[0,e-1]; for (i=0;i<e;i++){ if (MIN>A[i,e-1-i]){ MIN = A[i,e-1-i] } } printf ("%d\n",MIN); } else {printf ("La matriz A no es cuadrada. Por tanto, no se puede calcular la diagonal\n"); } if (h==g) { printf ("el minimo de la diagonal secundaria de la matriz B es: \n"); MIN= B[0,h-1] for (i=0;i<h;i++){ if (MIN>B[i,h-1-i]){ MIN = B[i,h-1-i]; } } printf ("%d\n", MIN); } else {printf ("La matriz B no es cuadrada. Por tanto, no se puede calcular la diagonal\n");} } void multiplicacion (int mat1[N][M],int mat2[N][M],int a, int b, int c, int d) { int i,j,k; int multiplicacion [a][d], resultado ; if (b==c) { for (i=0;i<b;i++){ for (j=0;j<c;j++){ {resultado = 0; for (k=0;k<d;k++) { resultado+= (matrizA[i][k] * matrizB[k][j]); multiplicacion[i][j]=resultado; }}} printf ("El resultado de la multiplicación es:\n"); for (i=0; i<a; i++) { for (j=0; j<b; j++) { printf ("%d ", multiplicacion[i][j]); } printf ("\n"); } printf ("\n"); } void menu (void) {printf ("ELIJA UNA OPCION:\n"); printf ("0- SALIR\n"); scanf ("%d", &opcion1); printf ("1- MOSTRAR MATRICES\n"); scanf ("%d", &opcion2); printf ("2- SUMAR MATRICES\n"); scanf ("%d", &opcion3); printf ("4- CALCULAR MINIMO DE LA SEGUNDA DIAGONAL DE AMBAS MATRICES\n"); scanf ("%d", &opcion4); printf ("5- MULTIPLICAR MATRICES \n"); scanf ("%d", &opcion5); printf ("\n"); } int main (void) { int B[N][M]; int C[N][M]; int Sum[N][M]; int i,j,x,y,w,t; leer matrices (B,x,y); printf ("Introduzca el número de filas:%d\n"); scanf ("%d",&x); printf ("Introduzca el número de columnas:%d\n"); scanf ("%d",&y); leer matrices (C,w,t); printf ("Introduzca el número de filas:%d\n"); scanf ("%d",&w); printf ("Introduzca el número de columnas:%d\n"); scanf ("%d",&t); suma (x=10, y=10); }
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
|
Mod: Los códigos deben ir en etiquetas GeSHiint main (void) { int B[N][M]; int C[N][M]; int Sum[N][M]; int i,j,x,y,w,t; leer matrices (B,x,y); printf ("Introduzca el número de filas:%d\n"); scanf ("%d",&x); printf ("Introduzca el número de columnas:%d\n"); scanf ("%d",&y); leer matrices (C,w,t); printf ("Introduzca el número de filas:%d\n"); scanf ("%d",&w); printf ("Introduzca el número de columnas:%d\n"); scanf ("%d",&t); suma (x=10, y=10); }
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda con Funciones.
Programación C/C++
|
freecom4ever
|
3
|
2,668
|
14 Marzo 2012, 19:52 pm
por Eternal Idol
|
|
|
funciones duda
Programación C/C++
|
ALONSOQ
|
5
|
3,251
|
27 Julio 2012, 17:23 pm
por rir3760
|
|
|
Duda con funciones en C.
Programación C/C++
|
Danirs
|
6
|
3,747
|
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
|
5,292
|
27 Enero 2013, 20:16 pm
por avesudra
|
|
|
Caso de programación en c++ utilizando funciones
Programación C/C++
|
jeff23
|
2
|
2,331
|
10 Octubre 2015, 17:43 pm
por daryo
|
|