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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problemas con Matrices en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con Matrices en C  (Leído 2,170 veces)
M4RQUS

Desconectado Desconectado

Mensajes: 12


"Paciencia Virtud de Sabios"


Ver Perfil
Problemas con Matrices en C
« en: 12 Septiembre 2018, 13:32 pm »

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

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5.  
  6. int n = 0;
  7. int m = 0;
  8.  
  9. int MatrizA[n][m];
  10. int MatrizB[n][m];
  11. int MatrizResultado[n][m];
  12.  
  13.  
  14. printf("Ingrese cuantas filas tienen las matrices.\n");
  15. printf("filas: ");
  16. scanf("%d",&n);
  17.  
  18. printf("Ingrese cuantas columnas tienen las matrices.\n");
  19. printf("filas: ");
  20. scanf("%d",&m);
  21.  
  22. ///Llenado de matrices
  23. for(int i=0;i<n;i++){
  24. for(int j=0; j<m;j++){
  25.  
  26. printf("Ingrese un numero para la posicion %d %d de la matriz A\n",i+1,j+1);
  27. printf("Numero: ");
  28. scanf("%d",&MatrizA[i][j]);
  29.  
  30. printf("MA: %d\n",MatrizA[i][j]);
  31.  
  32. printf("Ingrese un numero para la posicion %d %d de la matriz B\n",i+1,j+1);
  33. printf("Numero: ");
  34. scanf("%d",&MatrizB[i][j]);
  35.  
  36. printf("MB: %d\n\n",MatrizA[i][j]);
  37.  
  38. MatrizResultado[i][j] = MatrizA[i][j] + MatrizB[i][j];
  39.  
  40. printf("MR: %d\n",MatrizResultado[i][j]);
  41.  
  42.  
  43. }
  44. }}
  45. ///Muestra de resultados
  46. for(int i=0;i<n;i++){
  47. printf("|");
  48. for(int j=0; j<m;j++){
  49. printf(" %d ",MatrizResultado[i][j]);
  50. }
  51. printf("|\n");
  52. }
  53.  
  54.  
  55. return 0;
  56. }
  57.  
  58.  
  59.  


En línea

"Paciencia Virtud de Sabios"
System.out.println("Iniciado pero con ganas de Aprender");
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problemas con Matrices en C
« Respuesta #1 en: 12 Septiembre 2018, 13:51 pm »

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 Desconectado

Mensajes: 12


"Paciencia Virtud de Sabios"


Ver Perfil
Re: Problemas con Matrices en C
« Respuesta #2 en: 12 Septiembre 2018, 14:32 pm »

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 Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problemas con Matrices en C
« Respuesta #3 en: 12 Septiembre 2018, 14:57 pm »

Bien, esa es buena.
En línea

jca1

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Problemas con Matrices en C
« Respuesta #4 en: 13 Septiembre 2018, 17:12 pm »

Claro, por ejemplo podes definir a las matrices despues de pedir los valores n y m.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problemas con Matrices en C
« Respuesta #5 en: 13 Septiembre 2018, 17:49 pm »

Pero tienen que ser dinámicas al estilo
Código
  1. // supongamos m y n ya adquiridos desde el usuario
  2. int **matriz;
  3.  
  4. matriz = malloc(m * sizeof(int *));
  5. for(int i=0; i<m; ++i)
  6.    matriz[i] = malloc(n * sizeof(int));
  7.  
En línea

jca1

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Problemas con Matrices en C
« Respuesta #6 en: 13 Septiembre 2018, 18:49 pm »

Pero tienen que ser dinámicas al estilo
Código
  1. // supongamos m y n ya adquiridos desde el usuario
  2. int **matriz;
  3.  
  4. matriz = malloc(m * sizeof(int *));
  5. for(int i=0; i<m; ++i)
  6.    matriz[i] = malloc(n * sizeof(int));
  7.  

yo digo hacer esto:
Código:
        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 Desconectado

Mensajes: 12


"Paciencia Virtud de Sabios"


Ver Perfil
Re: Problemas con Matrices en C
« Respuesta #7 en: 13 Septiembre 2018, 19:25 pm »

Pero tienen que ser dinámicas al estilo
Código
  1. // supongamos m y n ya adquiridos desde el usuario
  2. int **matriz;
  3.  
  4. matriz = malloc(m * sizeof(int *));
  5. for(int i=0; i<m; ++i)
  6.    matriz[i] = malloc(n * sizeof(int));
  7.  

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");
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
matrices en C#
Programación General
volterra 4 10,168 Último mensaje 18 Mayo 2010, 06:26 am
por Og.
matrices
Programación C/C++
aral90 2 2,223 Último mensaje 9 Diciembre 2011, 20:13 pm
por aral90
matrices
.NET (C#, VB.NET, ASP)
legomanticore 4 3,544 Último mensaje 14 Mayo 2012, 03:02 am
por $Edu$
matrices en c
Programación C/C++
ALONSOQ 9 4,748 Último mensaje 27 Junio 2012, 05:15 am
por twins
OpenCv + Android + Problemas con Matrices
Java
Mr.Moonlight 2 2,220 Último mensaje 6 Abril 2022, 16:05 pm
por Mr.Moonlight
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines