Autor
|
Tema: Problemas con Matrices en C (Leído 2,209 veces)
|
M4RQUS
Desconectado
Mensajes: 12
"Paciencia Virtud de Sabios"
|
Buenas, tengo un problema quiero realizar la suma de 2 matrices elemento a elemento pero a la hora de imprimir los resultados en vez de imprimirlos todos solo imprime los ultimos resultados. Alguien tiene idea de por que pasa esto?? Gracias de ante mano #include <stdio.h> #include <stdlib.h> int main() { int n = 0; int m = 0; int MatrizA[n][m]; int MatrizB[n][m]; int MatrizResultado[n][m]; printf("Ingrese cuantas filas tienen las matrices.\n"); printf("Ingrese cuantas columnas tienen las matrices.\n"); ///Llenado de matrices for(int i=0;i<n;i++){ for(int j=0; j<m;j++){ printf("Ingrese un numero para la posicion %d %d de la matriz A\n",i +1,j +1); scanf("%d",&MatrizA [i ][j ]); printf("MA: %d\n",MatrizA [i ][j ]); printf("Ingrese un numero para la posicion %d %d de la matriz B\n",i +1,j +1); scanf("%d",&MatrizB [i ][j ]); printf("MB: %d\n\n",MatrizA [i ][j ]); MatrizResultado[i][j] = MatrizA[i][j] + MatrizB[i][j]; printf("MR: %d\n",MatrizResultado [i ][j ]); } }} ///Muestra de resultados for(int i=0;i<n;i++){ for(int j=0; j<m;j++){ printf(" %d ",MatrizResultado [i ][j ]); } } return 0; }
|
|
|
En línea
|
"Paciencia Virtud de Sabios" System.out.println("Iniciado pero con ganas de Aprender");
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Así no se dimensionan matrices. Una matriz estática no se debe dimensionar con variables. Si puedes es por extensión del compilador. Una matriz no debe tener dimensión 0. Si puedes es por extensión del compilador. Una vez que se ha dimensionado una matriz estática no puede cambiar de tamaño. Eso que has hecho de pedir el tamaño después es totalmente erróneo. C no comprueba el límite de los datos, es tarea del programador hacerlo. Has estado escribiendo fuera de la matriz y eso te podría causar problemas en programas mayores.
Si necesitas trabajar de esa forma debes mirar lo de la memoria dinámica, la familia de funciones alloc y free para liberar la memoria adquirida cuando ya no se necesite.
|
|
|
En línea
|
|
|
|
M4RQUS
Desconectado
Mensajes: 12
"Paciencia Virtud de Sabios"
|
Muchas gracias!
Así no se dimensionan matrices. Una matriz estática no se debe dimensionar con variables. Si puedes es por extensión del compilador. Una matriz no debe tener dimensión 0. Si puedes es por extensión del compilador. Una vez que se ha dimensionado una matriz estática no puede cambiar de tamaño. Eso que has hecho de pedir el tamaño después es totalmente erróneo. C no comprueba el límite de los datos, es tarea del programador hacerlo. Has estado escribiendo fuera de la matriz y eso te podría causar problemas en programas mayores.
Si necesitas trabajar de esa forma debes mirar lo de la memoria dinámica, la familia de funciones alloc y free para liberar la memoria adquirida cuando ya no se necesite.
Entonces voy a inicializar una dimension fija (supongo que de 100) y voy a variar el llenado con los m y n que sean menores que 100 Mod: Prohibido el doble o triple post. Usa el botón "Modificar".
|
|
« Última modificación: 16 Septiembre 2018, 01:35 am por #!drvy »
|
En línea
|
"Paciencia Virtud de Sabios" System.out.println("Iniciado pero con ganas de Aprender");
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Bien, esa es buena.
|
|
|
En línea
|
|
|
|
jca1
Desconectado
Mensajes: 58
|
Claro, por ejemplo podes definir a las matrices despues de pedir los valores n y m.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Pero tienen que ser dinámicas al estilo // supongamos m y n ya adquiridos desde el usuario int **matriz; matriz = malloc(m * sizeof(int *));for(int i=0; i<m; ++i) matriz [i ] = malloc(n * sizeof(int));
|
|
|
En línea
|
|
|
|
jca1
Desconectado
Mensajes: 58
|
Pero tienen que ser dinámicas al estilo // supongamos m y n ya adquiridos desde el usuario int **matriz; matriz = malloc(m * sizeof(int *));for(int i=0; i<m; ++i) matriz [i ] = malloc(n * sizeof(int));
yo digo hacer esto: int n ; int m ;
printf("Ingrese cuantas filas tienen las matrices.\n"); printf("filas: "); scanf("%d",&n);
printf("Ingrese cuantas columnas tienen las matrices.\n"); printf("filas: "); scanf("%d",&m); int MatrizA[n][m]; int MatrizB[n][m]; int MatrizResultado[n][m];
|
|
|
En línea
|
|
|
|
M4RQUS
Desconectado
Mensajes: 12
"Paciencia Virtud de Sabios"
|
Pero tienen que ser dinámicas al estilo // supongamos m y n ya adquiridos desde el usuario int **matriz; matriz = malloc(m * sizeof(int *));for(int i=0; i<m; ++i) matriz [i ] = malloc(n * sizeof(int));
esto se ve interesante pero no tengo idea de como funciona jaja recien estoy comenzando con C
|
|
|
En línea
|
"Paciencia Virtud de Sabios" System.out.println("Iniciado pero con ganas de Aprender");
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
matrices en C#
Programación General
|
volterra
|
4
|
10,191
|
18 Mayo 2010, 06:26 am
por Og.
|
|
|
matrices
Programación C/C++
|
aral90
|
2
|
2,249
|
9 Diciembre 2011, 20:13 pm
por aral90
|
|
|
matrices
.NET (C#, VB.NET, ASP)
|
legomanticore
|
4
|
3,570
|
14 Mayo 2012, 03:02 am
por $Edu$
|
|
|
matrices en c
Programación C/C++
|
ALONSOQ
|
9
|
4,787
|
27 Junio 2012, 05:15 am
por twins
|
|
|
OpenCv + Android + Problemas con Matrices
Java
|
Mr.Moonlight
|
2
|
2,251
|
6 Abril 2022, 16:05 pm
por Mr.Moonlight
|
|