Eliminar elementos basura de un array en C

Iniciado por RuloVerde, 30 Enero 2017, 18:46 PM

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

RuloVerde

Hola, hace mucho que no entro en esta web y me da gusto volver a formar parte de esta comunidad. Bueno, dicho esto, expreso mi inquietud. Tengo una función que lo que tiene que hacer es "Emitir el valor máximo e indicar la cantidad de veces que apareció y el número de orden en que fue ingresado."
He aquí el código:

Citarvoid funcion(int v[],int tam){
   int max=0,i,j,acumulador=0,nro_orden[tam];

   for(i=0;i<tam;i++){
       if(v>max){
         max=v;         //establecemos el maximo
       }
   }

   for(i=0;i<tam;i++){
       if(v==max){
         acumulador++;     //contamos la cantidad de veces que aparece el maximo
       }
   }

   i=0;
   j=0;
   while(i<tam){
        if(max==v){
           nro_orden[j]=i+1;
           j++;
        }
        i++;
   }

   printf("\nEl valor maximo es: %d",max);
   printf("\nLa cantidad de veces que aparecio el maximo es: %d",acumulador);

   printf("\nEl numero de orden en que fue ingresado es: ");
   i=0;
   for(;i<tam;i++){
      printf("[%d] ",nro_orden);
   }
}


Mi duda es que el vector "nro_orden" a pesar de que imprime correctamente los órdenes, también lo hace con los elementos basura. Entonces, quiero saber como no imprimirlos o eliminarlos directamente para poder visualizarlo con mayor claridad. Alguna idea o sugerencia??
Gracias de antemano y espero poder ser un miembro útil en esta comunidad y aprovecharla al máximo!

PD: Veo que en la "Previsualización" de esta publicación donde aparece "v" debería ser "v sub i" y no me deja arreglarlo. Quería aclararlo.

MAFUS

No debes citar tu código, debes ir a Código GeSHi y buscar el lenguaje en que está. El editor creará unas etiquetas y tu código debe ir en medio de ellas.

RuloVerde


lfgmespino

No creo que te funcione. Mira a ver ahora.

    include <stdio.h>
#include <stdlib.h>

/*
Eliminar elementos basura de un array en C
« en: 30 Enero 2017, 18:46 »
Hola, hace mucho que no entro en esta web y me da gusto volver a formar parte de esta comunidad. Bueno, dicho esto, expreso mi inquietud. Tengo una función que lo que tiene que hacer es "Emitir el valor máximo e indicar la cantidad de veces que apareció y el número de orden en que fue ingresado."
He aquí el código:
*/

void funcion(int v[],int tam){
    int max=0,i,j,acumulador=0;
    int nro_orden[]={0, 0, 0, 0, 0, 0};

   
    for(i=0;i<tam;i++){
    nro_orden[i]=0;
        }
   
    for(i=0;i<tam;i++){
        if(v[i]>max){
          max=v[i];         //establecemos el maximo
        }
    }

    for(i=0;i<tam;i++){
        if(v[i]==max){
          acumulador++;     //contamos la cantidad de veces que aparece el maximo
        }
    }

    i=0;
    j=0;
    while(i<tam){
         if(max==v[i]){
            nro_orden[j]=i+1;
            j++;
         }
         i++;
         
    }

    printf("\nEl valor maximo es: %d",max);
    printf("\nLa cantidad de veces que aparecio el maximo es: %d",acumulador);

    printf("\nEl numero de orden en que fue ingresado es: ");
   
    for(i=0;i<tam;i++){
       if (nro_orden[i]) printf("[%d] ", nro_orden[i]);
    }
}

int main() {
int vector[]={2, 9, 8, 4, 9, 5};
funcion(vector, 6);

return 0;
}
[ /code]