Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ;c1v!c en 22 Mayo 2011, 22:39 pm



Título: Error con vectores! (SOLUCIONADO)
Publicado por: ;c1v!c en 22 Mayo 2011, 22:39 pm
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

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.    int vec[10],vpar[5],vimpar[5];
  6.    int n1,j,i,cont=0;
  7.  
  8.    //---------CARGA DEL VECTOR------------- //  
  9.         for(j=1;j<11;j++)
  10.        {
  11.           printf("Ingrese vector:");
  12.           scanf("%d",&n1);
  13.           vec[j]=n1;
  14.  
  15.         }
  16.    //---------EVALUA CONTENIDO DEL VECTOR------------- //          
  17.  
  18.        for(j=1;j<11;j++)
  19.        {
  20.            if((j%2)==0)
  21.               {
  22.                 vpar[j]= vec[j];          
  23.               }
  24.            else
  25.            {vimpar[j]= vec[j];}
  26.         }
  27.  
  28.    //---------IMPRIME DATOS DEL VECTOR------------- //          
  29.         printf("Los pares son:\n");
  30.         for(j=1;j<6;j++)
  31.         {
  32.           printf(" %d ||",vpar[j]);
  33.         }
  34.          printf("\n");
  35.          printf("Los impares son:\n");          
  36.          for(i=1;i<6;i++)
  37.         {
  38.           printf(" %d ||",vimpar[i]);
  39.         }
  40.         printf("\n");
  41.    return 0;
  42. }

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 ||


Título: Re: Error con vectores!
Publicado por: Khronos14 en 22 Mayo 2011, 22:56 pm
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.


Título: Re: Error con vectores!
Publicado por: ;c1v!c en 22 Mayo 2011, 23:03 pm
lo modifique como me digiste pero el error sigue!
lo coloque asi "for(j=0;j<10;j++)"


Título: Re: Error con vectores!
Publicado por: Ferno en 23 Mayo 2011, 00:00 am
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?


Título: Re: Error con vectores!
Publicado por: nicolasblues86 en 23 Mayo 2011, 00:02 am
bueno te posteo el codigo corregido esto  anda 10 puntos

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. int main()
  5. {
  6.    int vec[10],vpar[5],vimpar[5];
  7.    int n1,j,i,k, cont=0;
  8.  
  9.    //---------CARGA DEL VECTOR------------- //  
  10.         for(j=0;j<10;j++)
  11.        {
  12.           printf("Ingrese vector:");
  13.           scanf("%i",&n1);
  14.           vec[j]=n1;
  15.  
  16.         }
  17.    //---------EVALUA CONTENIDO DEL VECTOR------------- //          
  18.  
  19.        for(j=0, i=0, k=0;j<10;j++)
  20.        {
  21.            if((vec[j]%2)==0)
  22.               {
  23.                 vpar[k++]= vec[j];          
  24.               }
  25.            else
  26.            {vimpar[i++]= vec[j];}
  27.         }
  28.  
  29.    //---------IMPRIME DATOS DEL VECTOR------------- //          
  30.         printf("Los pares son:\n");
  31.         for(j=0;j<5;j++)
  32.         {
  33.           printf(" %i ||",vpar[j]);
  34.         }
  35.          printf("\n");
  36.          printf("Los impares son:\n");          
  37.          for(i=0;i<5;i++)
  38.         {
  39.           printf(" %i ||",vimpar[i]);
  40.  
  41.         }
  42.  
  43.         scanf("%d",&n1);
  44.         printf("\n");
  45.    return 0;
  46. }
  47.  
  48.  

el problema principal era en esta parte

Código
  1.  
  2. for(j=1;j<11;j++) //el for que ya lo havias corrgido
  3.        {
  4.            if((j%2)==0) /* dividis por 2 a la variable cuando enverdad deberias   dividir el contenido del vector ej: vec[i]   */
  5.               {
  6.                 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  */    
  7.               }
  8.            else
  9.            {vimpar[j]= vec[j];}
  10.  





 


Título: Re: Error con vectores! (SOLUCIONADO)
Publicado por: ;c1v!c en 23 Mayo 2011, 17:48 pm
Perfecto, muchas gracias a todos!
Saludos!