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 :(
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void LeerInt(int*,int*,int*,int*,char*);
void M1(int*,int*,int*,int,char*);
int main(){
int x[50];
int x2[50];
int x1[50];
int d[50];
int n;
LeerInt(x,x1,x2,&n,"NUMERO");
M1(x,x1,x2,n,"NUMERO");
return 0;
}
void LeerInt(int *x,int*x1,int*x2,int *m,char*nom){
int i;
int matriz[100][100];
printf("\n\t elementos del vector son: ");
scanf("%i",m);
for(i=0;i<*m;i++){
printf("\n\t INGRESE Los elementos del primer vector %s[%i]:", nom,i+1);
scanf("%d",&x[i]);
}
for(i=0;i<*m;i++){
printf("\n\t INGRESE Los elementos del segundo vector %s[%i]:", nom,i+1);
scanf("%d", &x1[i]);
}
for(i=0;i<*m;i++){
printf("\n\t INGRESE Los elementos del tercer vector %s[%i]:", nom,i+1);
scanf("%d", &x2[i]);
}
}
void M1(int*x,int*x1,int*x2,int m,char*nom){
int t,j,k=0,z=0,i=0,l;
int matriz[100][100];
for(t=0;t<m;t++)
for(j=0;j<3;j++)
{
matriz[t][j]=x[k];k++;
}
for(t=0;t<m;t++)
for(j=0;j<3;j++)
printf("[%d]\n",matriz[t][j]);
for(t=0;t<m;t++)
for(j=0;j<3;j++)
{
matriz[t][j]=x1[z];z++;
}
for(t=0;t<m;t++)
for(j=0;j<3;j++)
printf("[%d]\n",matriz[t][j]);
for(t=0;t<m;t++)
for(j=0;j<3;j++)
{
matriz[t][j]=x2[i];i++;
}
for(t=0;t<m;t++)
for(j=0;j<3;j++)
printf("[%d]\n",matriz[t][j]);
return;}
Creo que el problema está en la función M1
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
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
Cita de: cho250425 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 :(
[...] code[...]
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);
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:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j,matriz[3][3];
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("Escribe: ");
scanf("%d",&matriz[i][j]);
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ",matriz[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
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.
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