Problema con vectores en C [SOLUCIONADO]

Iniciado por ;c1v!c, 25 Mayo 2011, 20:31 PM

0 Miembros y 1 Visitante están viendo este tema.

;c1v!c

Hola bueno despues de poder solucionar el problema de este vector me pretendi a hacer los mismo pero ahora ingresar los elementos pares e impares
y formar el vector q contenga los pares e impares.

Hasta el momento solo logre q me imprima los pares y nada mas:

#include <stdio.h>
#include <stdlib.h>
int main()
{
   int vec[10],vpar[5],vimpar[5];
   int n1,j,i,x,n2,y;
 
   //---------CARGA DEL VECTOR------------- //  
        for(j=0;j<5;j++)
       {
          printf("Ingrese vector impar:");
          scanf("%d",&n1);
          vimpar[j]=n1;
          printf("Ingrese vector par:");
          scanf("%d",&n2);
          vpar[j]=n2;
        }
                 
   //---------EVALUA CONTENIDO DEL VECTOR------------- //          
       
       for(y=0,i=0,x=0;x<10;x++)
       {
           if (vec[x]==vimpar[x])
           {
               vec[i++]=vimpar[x];
                 
           }
           else
           {
               vec[i++]=vpar[x];
                   
           }
           
        }
       
   //---------IMPRIME DATOS DEL VECTOR------------- //          
        printf("Los elementos del vectore son:\n");
        for(j=0;j<10;j++)
        {
          printf(" %d ||",vec[j]);
        }
        printf("\n");

   return 0;
}


Saludos!

nicolasblues86

no entiendo mucho lo que estas haciendo
        for(y=0,i=0,x=0;x<10;x++)
        {
            if (vec[x]==vimpar[x])// vec no tiene otra cosa que basura para que comparar??
            {
                vec[i++]=vimpar[x];

            }
            else
            {
                vec[i++]=vpar[x];

            }

         }


Solamente hay 10 clases de personas en el mundo los que saben leer binario y los que no

;c1v!c

Cita de: nicolasblues86 en 26 Mayo 2011, 01:15 AM
no entiendo mucho lo que estas haciendo
       for(y=0,i=0,x=0;x<10;x++)
       {
           if (vec[x]==vimpar[x])// vec no tiene otra cosa que basura para que comparar??
           {
               vec[i++]=vimpar[x];

           }
           else
           {
               vec[i++]=vpar[x];

           }

        }




Eso es lo q me esta fallando al parecer la idea es que
vec[0] le asigne vimpar[0]
vec[1] le asigne vpar[0]
vec[2] le asigne vimpar[1]
vec[3] le asigne vapar[1]

y asi hasta 10 en este caso.

nicolasblues86

justamente ahi esta el problema lo que pasa que vec no tiene valores asignados por lo tanto cuando vos haces " if (vec[x]==vimpar[x]) " estas comparando el contenido de vec
  • que no es nada es basura porque jamas se le asigno nada con el contenido de vimpar
  • que si se lo havias asignado
Solamente hay 10 clases de personas en el mundo los que saben leer binario y los que no

Mr.Blue

#4
Código (cpp) [Seleccionar]

       for(y=0,i=0,x=0;x<10;x++) // Y no la estas usando en ningun lado e i esta al cuete
       {
           if (vec[x]==vimpar[x])//estas comparadno al vec que no esta inicializado osea que tiene basura dentro, con un vector con un valor par en la posicion x.
           { // no es necesario usar llaves cuando tenes una sentencia sola, las llaves encierran un conjunto de sentencias
               vec[i++]=vimpar[x];//le estas sumando 1 a vec, por lo que ira de 1 a 10 (overflow) y no de 0 a 9

           }
           else
           {
               vec[i++]=vpar[x];

           }

        }


Sabemos que los numeros pares son divisibles por 2 y el resto es 0
Entonces seria mas facil preguntar para saber si es par o impar, si
Código (cpp) [Seleccionar]
vimpar[x]%2==0
Citar% devuelve el resto de la divicion.

Pd. en Conclusión con lo dicho anteriormente por el otro usuario que me gano de mano XD
esa condicion if simpre va a ser falsa por eso solo te muestra los pares

;c1v!c

Me olvide de dejarles la solución si que aca esta:

Saludos y disculpen la tardanza.

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int vec[10],vpar[5],vimpar[5];
    int n1,j,i,x,n2,y;

    //---------CARGA DEL VECTOR------------- // 
         for(j=0;j<5;j++)
        {
           printf("Ingrese vector impar:");
           scanf("%d",&vimpar[j]);
           printf("Ingrese vector par:");
           scanf("%d",&vpar[j]);           
         }
         for(j=0;j<5;j++)
        {
           printf("Vector impar:[%d] || vector par:[%d]\n",vimpar[j],vpar[j]);
         
         }

    //---------EVALUA CONTENIDO DEL VECTOR------------- //           
       
        for(j=0,i=0,x=0;x<10;x++)
        {
            if ((x%2)==0)
            {
                vec[x]=vimpar[i++];

            }
            else
            {
                vec[x]=vpar[j++];

            }

         }

    //---------IMPRIME DATOS DEL VECTOR------------- //           
         printf("\n\nLos elementos del vectore son:\n");
         for(j=0;j<10;j++)
         {
           printf("\t|| %d ||\n",vec[j]);
         }

    return 0;
}