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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  matriz imprime basura
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: matriz imprime basura  (Leído 3,028 veces)
cho250425

Desconectado Desconectado

Mensajes: 3


Ver Perfil
matriz imprime basura
« en: 19 Febrero 2017, 04:57 am »

ayuda por favor no se por que la matriz me imprime lo que debe de ser pero tambien me imprime basura :( soy nuevo en esto de programacion por favor ayuda :(

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4.  
  5. void LeerInt(int*,int*,int*,int*,char*);
  6. void M1(int*,int*,int*,int,char*);
  7.  
  8. int main(){
  9. int x[50];
  10. int x2[50];
  11. int x1[50];
  12. int d[50];
  13. int n;
  14. LeerInt(x,x1,x2,&n,"NUMERO");
  15. M1(x,x1,x2,n,"NUMERO");
  16.  
  17.  
  18. return 0;
  19. }
  20.  
  21. void LeerInt(int *x,int*x1,int*x2,int *m,char*nom){
  22. int i;
  23. int matriz[100][100];
  24. printf("\n\t elementos del  vector son: ");
  25. scanf("%i",m);
  26. for(i=0;i<*m;i++){
  27. printf("\n\t  INGRESE Los elementos del primer vector %s[%i]:", nom,i+1);
  28. scanf("%d",&x[i]);
  29. }
  30. for(i=0;i<*m;i++){
  31. printf("\n\t  INGRESE Los elementos del segundo vector %s[%i]:", nom,i+1);
  32. scanf("%d", &x1[i]);
  33. }
  34. for(i=0;i<*m;i++){
  35. printf("\n\t  INGRESE Los elementos del tercer vector %s[%i]:", nom,i+1);
  36. scanf("%d", &x2[i]);
  37. }
  38. }
  39.  
  40. void M1(int*x,int*x1,int*x2,int m,char*nom){
  41.    int t,j,k=0,z=0,i=0,l;
  42. int matriz[100][100];
  43.  
  44. for(t=0;t<m;t++)
  45. for(j=0;j<3;j++)
  46. {
  47. matriz[t][j]=x[k];k++;
  48. }
  49. for(t=0;t<m;t++)
  50. for(j=0;j<3;j++)
  51. printf("[%d]\n",matriz[t][j]);
  52.  
  53. for(t=0;t<m;t++)
  54. for(j=0;j<3;j++)
  55. {
  56. matriz[t][j]=x1[z];z++;
  57. }
  58. for(t=0;t<m;t++)
  59. for(j=0;j<3;j++)
  60. printf("[%d]\n",matriz[t][j]);
  61.  
  62. for(t=0;t<m;t++)
  63. for(j=0;j<3;j++)
  64. {
  65. matriz[t][j]=x2[i];i++;
  66. }
  67. for(t=0;t<m;t++)
  68. for(j=0;j<3;j++)
  69. printf("[%d]\n",matriz[t][j]);
  70. return;}
  71.  
  72.  
  73.  


En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: matriz imprime basura
« Respuesta #1 en: 19 Febrero 2017, 22:47 pm »

Creo que el problema está  en la función M1
Código:
int matriz[100][100];
 
for(t=0;t<m;t++)
for(j=0;j<3;j++)
Aquí estas creando una matriz de 100 filos y 100 columnas y en el for cundo lo estas llenando
Código:
matriz[t][j]=x[k];k++;
En [][j] solo estas llenando 3 espacios dejándote con 97 espacios vacíos con valores basura
Y en [t][] estas llenando con una longitud de m elementos pero k tiene un aumento de m^3 con lo
Que sobrepasa la longitud de x[] y te da elementos inesperados


En línea

integeroverflow

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: matriz imprime basura
« Respuesta #2 en: 24 Febrero 2017, 22:53 pm »

ayuda por favor no se por que la matriz me imprime lo que debe de ser pero tambien me imprime basura :( soy nuevo en esto de programacion por favor ayuda :(

Código
  1. [...] code[...]
  2.  

inicializa todos los elementos de la matriz a 0 antes de trabajar con ella

#include <string.h>
memset(matriz, 0, sizeof(matriz[0][0]) * 100 * 100);
En línea

naidmen

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: matriz imprime basura
« Respuesta #3 en: 26 Febrero 2017, 18:32 pm »

No entiendo tu codigo pero creo que se debe a que si quieres llenar una matriz, no puedes hacerlo con solo un for, debe ser un for anidado, ejemplo:

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main()
  5. {
  6. int i,j,matriz[3][3];
  7.  
  8. for(i=0;i<3;i++){
  9. for(j=0;j<3;j++){
  10. printf("Escribe: ");
  11. scanf("%d",&matriz[i][j]);
  12. }
  13. }
  14.  
  15. for(i=0;i<3;i++){
  16. for(j=0;j<3;j++){
  17. printf("%d ",matriz[i][j]);
  18. }
  19. printf("\n");
  20. }
  21.  
  22. system("pause");
  23. return 0;
  24. }
« Última modificación: 26 Febrero 2017, 18:37 pm por naidmen » En línea

naidmen

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: matriz imprime basura
« Respuesta #4 en: 26 Febrero 2017, 18:39 pm »

Vi mejor tu código y estas creando tres vectores para llenar una matriz, si se puede pero creo que de esa forma es la menos apropiada.
En línea

valarauko

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: matriz imprime basura
« Respuesta #5 en: 28 Febrero 2017, 23:08 pm »

Las variables en C siempre tienen basura en la memoria, siempre tenes que recorrer el vector e inicializarlo a 0 antes de hacer algo que requiera operaciones
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
EddyW 2 5,827 Último mensaje 14 Agosto 2010, 06:18 am
por EddyW
MATRIZ que imprima como una matriz en forma de cuadrado... ayudaaaaa!! help
Programación C/C++
oscarpy 3 8,515 Último mensaje 9 Abril 2012, 16:23 pm
por Xandrete
Juego con matriz dinámica en c++, función para rrecorrer matriz
Programación C/C++
jajaimess 1 3,427 Último mensaje 21 Junio 2014, 05:21 am
por .:UND3R:.
imprime basura
Java
m@o_614 0 1,348 Último mensaje 15 Septiembre 2014, 01:27 am
por m@o_614
Matriz Basura
Programación C/C++
Estebanmc2912 3 1,685 Último mensaje 8 Noviembre 2015, 11:42 am
por Estebanmc2912
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines