Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: RuloVerde en 30 Enero 2017, 18:46 pm



Título: Eliminar elementos basura de un array en C
Publicado por: RuloVerde en 30 Enero 2017, 18:46 pm
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:

Citar
void 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.


Título: Re: Eliminar elementos basura de un array en C
Publicado por: MAFUS en 30 Enero 2017, 20:18 pm
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.


Título: Re: Eliminar elementos basura de un array en C
Publicado por: RuloVerde en 3 Febrero 2017, 21:25 pm
Enterado, muchas gracias.


Título: Re: Eliminar elementos basura de un array en C
Publicado por: lfgmespino en 4 Febrero 2017, 23:53 pm
No creo que te funcione. Mira a ver ahora.

Código
  1.    include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /*
  5. Eliminar elementos basura de un array en C
  6. « en: 30 Enero 2017, 18:46 »
  7. 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."
  8. He aquí el código:
  9. */
  10.  
  11. void funcion(int v[],int tam){
  12.    int max=0,i,j,acumulador=0;
  13.    int nro_orden[]={0, 0, 0, 0, 0, 0};
  14.  
  15.  
  16.    for(i=0;i<tam;i++){
  17.     nro_orden[i]=0;
  18.        }
  19.  
  20.    for(i=0;i<tam;i++){
  21.        if(v[i]>max){
  22.          max=v[i];         //establecemos el maximo
  23.        }
  24.    }
  25.  
  26.    for(i=0;i<tam;i++){
  27.        if(v[i]==max){
  28.          acumulador++;     //contamos la cantidad de veces que aparece el maximo
  29.        }
  30.    }
  31.  
  32.    i=0;
  33.    j=0;
  34.    while(i<tam){
  35.         if(max==v[i]){
  36.            nro_orden[j]=i+1;
  37.            j++;
  38.         }
  39.         i++;
  40.  
  41.    }
  42.  
  43.    printf("\nEl valor maximo es: %d",max);
  44.    printf("\nLa cantidad de veces que aparecio el maximo es: %d",acumulador);
  45.  
  46.    printf("\nEl numero de orden en que fue ingresado es: ");
  47.  
  48.    for(i=0;i<tam;i++){
  49.       if (nro_orden[i]) printf("[%d] ", nro_orden[i]);
  50.    }
  51. }
  52.  
  53. int main() {
  54. int vector[]={2, 9, 8, 4, 9, 5};
  55. funcion(vector, 6);
  56.  
  57. return 0;
  58. }
  59. [ /code]