Hola bueno estaba viendo un codigo viejo q tenia y me tira un error cuando se imprimen los vectores
pero en realidad nose cual es ya que antes andaba y ahora no.
Saludos
#include <stdio.h>
#include <stdlib.h>
int main()
{
int vec[10],vpar[5],vimpar[5];
int n1,j,i,cont=0;
//---------CARGA DEL VECTOR------------- //
for(j=1;j<11;j++)
{
printf("Ingrese vector:");
scanf("%d",&n1);
vec[j]=n1;
}
//---------EVALUA CONTENIDO DEL VECTOR------------- //
for(j=1;j<11;j++)
{
if((j%2)==0)
{
vpar[j]= vec[j];
}
else
{vimpar[j]= vec[j];}
}
//---------IMPRIME DATOS DEL VECTOR------------- //
printf("Los pares son:\n");
for(j=1;j<6;j++)
{
printf(" %d ||",vpar[j]);
}
printf("\n");
printf("Los impares son:\n");
for(i=1;i<6;i++)
{
printf(" %d ||",vimpar[i]);
}
printf("\n");
return 0;
}
y me tira este error en la consola:
gcc VEC-5.c -o VEC-5
./VEC-5
Ingrese vector:1
Ingrese vector:2
Ingrese vector:3
Ingrese vector:4
Ingrese vector:5
Ingrese vector:6
Ingrese vector:7
Ingrese vector:8
Ingrese vector:9
Ingrese vector:0
Los pares son:
11223844 || 7 || 134514160 || 9 || 0 ||
Los impares son:
1 || 1818672 || 3 || -1076324776 || 5 ||
El error están en la manera que recorres los arrays. Si declaras un array de tamaño 10, la primera posición es el 0 y la última es el 9. Tú estás recorriendo el array del 1 al 11 y produces un BufferOverflow.
Saludos.
lo modifique como me digiste pero el error sigue!
lo coloque asi "for(j=0;j<10;j++)"
Tratá de re-postear el código cada vez que lo modificás así sabemos exactamente que es lo que modificaste.
También cambiaste la forma de recorrerlo en los arrays de 5 posiciones, no?
bueno te posteo el codigo corregido esto anda 10 puntos
#include <stdio.h>
#include <stdlib.h>
int main()
{
int vec[10],vpar[5],vimpar[5];
int n1,j,i,k, cont=0;
//---------CARGA DEL VECTOR------------- //
for(j=0;j<10;j++)
{
printf("Ingrese vector:");
scanf("%i",&n1);
vec[j]=n1;
}
//---------EVALUA CONTENIDO DEL VECTOR------------- //
for(j=0, i=0, k=0;j<10;j++)
{
if((vec[j]%2)==0)
{
vpar[k++]= vec[j];
}
else
{vimpar[i++]= vec[j];}
}
//---------IMPRIME DATOS DEL VECTOR------------- //
printf("Los pares son:\n");
for(j=0;j<5;j++)
{
printf(" %i ||",vpar[j]);
}
printf("\n");
printf("Los impares son:\n");
for(i=0;i<5;i++)
{
printf(" %i ||",vimpar[i]);
}
scanf("%d",&n1);
printf("\n");
return 0;
}
el problema principal era en esta parte
for(j=1;j<11;j++) //el for que ya lo havias corrgido
{
if((j%2)==0) /* dividis por 2 a la variable cuando enverdad deberias dividir el contenido del vector ej: vec[i] */
{
vpar[j]= vec[j]; /* vpar tiene menos elementos que vec por lo tanto se produce un error de desbordamiento nesesitas una variable aparte que corra tanto vpar como vimpar */
}
else
{vimpar[j]= vec[j];}
Perfecto, muchas gracias a todos!
Saludos!