[C con Clase] Ayuda con un programa en C!

Ali Rincon alrincon1963 en hotmail.com
Jue Abr 14 03:49:40 CEST 2016


El pasado 2016-04-14 00:55:54, yolmer escribió:
 
y> oye ejecuté tu programa y no borra el cero de cualquier manera no veo un
y> algoritmo de ordenar
y> arriba dice que ordena y elimina repetidos tal vez el algoritmo de ordenar
y> es el que te elimina el cero
y> El 13 de abril de 2016, 10:28, Ali Rincon <alrincon1963 en hotmail.com>
y> escribió:
y> > El siguiente programa elimina las filas repetidas y ordena un vector de
y> > 1fila X nColumnas. El problema que tengo es que el programa no funciona
y> > cuando se introduce una componente nula, es decir, cero. Por ejemplo,
y> > vector1=[1,0,1,6,8] lo ordena como vector3=[1,6,8]. El programa se "come"
y> > la componente cero y no se por que lo hace asi. Alguien pudiera ayudarme a
y> > ver por que lo hace asi y como se puede solucionar??
y> >
y> > Altamente agradecido,
y> >
y> > Ali Rincon
y> >
y> >
y> > #include <stdio.h>
y> > #include <stdlib.h>
y> >
y> > /**ordenarvector**/
y> >
y> > /**Programa que dado un vector de N-columnas elimina elementos repetidos y
y> > ordena el vector en orden ascendente**/
y> >
y> >
y> > int main()
y> > {
y> >     int i,j,k,m,nC,num,cont,repetidos;
y> >     int *vector1;
y> >     int *vector2;
y> >     int *vector3;
y> >     char c;
y> >
y> >     /**Introduccion del numero de columnas del vector1**/
y> >
y> >     printf("Introduzca el numero de columnas del vector1: ");
y> >     scanf("%d", &nC);
y> >     printf("\n");
y> >
y> >     while((c=getchar()) != '\n' && c != EOF);
y> >
y> >     /**Reserva dinamica de memoria para el vector1[i]**/
y> >
y> >     vector1=(int *)malloc(nC * sizeof(int *));
y> >
y> >     if(vector1== NULL)
y> >     {
y> >         printf("Error de memoria\n");
y> >         exit(-1);
y> >     }
y> >
y> >    /**Introduccion de los valores del vector**/
y> >
y> >     for(i=0; i<nC; i++)
y> >     {
y> >         printf("Introduzca las componentes del vector1[%d]: ",i+1);
y> >         scanf("%d", &vector1[i]);
y> >         printf("\n");
y> >     }
y> >
y> >     /**Visualizar el vector**/
y> >
y> >     printf("vector1 = ");
y> >     for(i=0; i<nC; i++)
y> >     {
y> >         printf("%d ",vector1[i]);
y> >     }
y> >     printf("\n\n");
y> >
y> >     /**Reserva dinamica de memoria para el vector2[i]**/
y> >
y> >     vector2=(int *)malloc(nC * sizeof(int *));
y> >
y> >     if(vector2== NULL)
y> >     {
y> >         printf("Error de memoria\n");
y> >         exit(-1);
y> >     }
y> >
y> >     /**Reserva dinamica de memoria para el vector3[i]**/
y> >
y> >     vector3=(int *)malloc(nC * sizeof(int *));
y> >
y> >     if(vector3== NULL)
y> >     {
y> >         printf("Error de memoria\n");
y> >         exit(-1);
y> >     }
y> >
y> >     /**Eliminacion de las componentes repetidas en el vector1**/
y> >
y> >     j=0;
y> >     m=0;
y> >     repetidos=0;
y> >     for(i=0; i<nC; i++)
y> >     {
y> >         cont=0;
y> >         num=vector1[i];
y> >         vector2[j]=num;
y> >         for(k=0; k<nC; k++)
y> >         {
y> >             if(vector2[k]==num)
y> >             {
y> >                 cont++;
y> >             }
y> >         }
y> >         if(cont==1)
y> >         {
y> >             vector3[m]=num;
y> >             m++;
y> >         }
y> >         else
y> >         {
y> >             repetidos++;
y> >         }
y> >         j++;
y> >     }
y> >
y> >     printf("La cantidad de elementos repetidos son: %d",repetidos);
y> >     printf("\n");
y> >     printf("El vectorfinal tendra %d elementos",nC-repetidos);
y> >     printf("\n\n");
y> >
y> >     /**Visualizar el vector3**/
y> >
y> >     printf("vector3 = ");
y> >     for(i=0; i<nC-repetidos; i++)
y> >     {
y> >         printf("%d ",vector3[i]);
y> >     }
y> >     printf("\n\n");


Si, es verdad. No adjunte el otro algoritmo. pero asi como esta, si borra el cero. El problema debe de estar en el algoritmo de eliminacion, pero no veo el problema. Si lo pruebas con el ejemplo que doy arroja ese resultado que escribo.

Agradecido.


y> > _______________________________________________
y> > Lista de correo Cconclase Cconclase en listas.conclase.net
y> > http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
y> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
y> >
y> _______________________________________________
y> Lista de correo Cconclase Cconclase en listas.conclase.net
y> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
y> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


Más información sobre la lista de distribución Cconclase