Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Contar elementos de un array

Estas en el tema de Contar elementos de un array en el foro de C/C++ en Foros del Web. Buenas, tengo un ejercio hecho casi entero lo pongo por aquí Cita: Hacer un programa que diga cuantas veces aparece cada uno de los elementos ...
  #1 (permalink)  
Antiguo 02/02/2012, 14:31
 
Fecha de Ingreso: junio-2008
Mensajes: 27
Antigüedad: 15 años, 10 meses
Puntos: 0
Contar elementos de un array

Buenas, tengo un ejercio hecho casi entero lo pongo por aquí

Cita:
Hacer un programa que diga cuantas veces aparece cada uno de los elementos de un array. El
programa ha de controlar que un número no se analice dos veces; por ejemplo, si hay un 3 en la
segunda posición y otro en la sexta, el programa ha de decir que el 3 aparece dos veces, pero sólo
cuando encuentra el que hay en la tercera posición, cuando encuentre el que hay a la sexta, no lo
tiene que evaluar. Sugerencia, utilizar un array auxiliar para ir guardando los elementos analizados.
Cuento bien los valores pero cuando si un número se repite 3 veces imprimo que sea ha repetido 3 veces, 3 veces en vez de 1 sola vez.

No sé si me explico.

Código:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>


main()
{
int T[10], i, c = 0, z, T2[10];

	for (i = 0; i <= 9; i++)
   {
   	printf ("Introduce %d\n", i);
      scanf("%d", &T[i]);
   }

   for (i = 0; i <= 9; i++)
   {
   	for (z = 0; z <= 9; z++)
      {
      	if (T[i] == T[z])
         {
         	c++;
         }
      }
      T2[i] = c;
      c = 0;
   }

   for (i = 0; i <= 9; i++)
   {
   	printf ("%d ", T[i]);
   }
   printf ("\n");
   for (i = 0; i <= 9; i++)
   {
      printf ("\n%d se repite %d veces\n\n", T[i], T2[i]);
   }
   getch();

}

La salida



En este caso debería de imprimir X se repite X veces dando 7 vueltas el bucle, no 10.

Gracias.
  #2 (permalink)  
Antiguo 02/02/2012, 22:04
Avatar de Jorge__  
Fecha de Ingreso: enero-2012
Mensajes: 29
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Contar elementos de un array

Se me ocurre algo asi:

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main(){
  6.     int numeros[5];
  7.     int numeros_len = sizeof(numeros)/sizeof(int);
  8.     int recorridos[numeros_len];
  9.     int i, j, k, ban, con;
  10.  
  11.     for(i = 0; i < numeros_len; i++){
  12.         cin >> numeros[i];
  13.     }
  14.  
  15.     for(i = 0; i < numeros_len; i++){
  16.         for(j = 0 ; j < numeros_len; j++){
  17.             if(recorridos[j] == numeros[i]){
  18.                 ban = 1;
  19.             }
  20.         }
  21.         if(ban != 1){
  22.             recorridos[i] = numeros[i];
  23.             con = 0;
  24.             for(k = 0 ; k < numeros_len; k++){
  25.                 if(recorridos[i] == numeros[k]){
  26.                     con++;
  27.                 }
  28.             }
  29.             cout << "El numero " << recorridos[i] << " se a escrito " << con;
  30.             if(con == 1){
  31.                 cout << " vez." << endl;
  32.             }else{
  33.                 cout << " veces." << endl;
  34.             }
  35.         }
  36.         ban = 0;
  37.     }
  38.  
  39.     return 0;
  40. }
  #3 (permalink)  
Antiguo 04/02/2012, 10:14
 
Fecha de Ingreso: junio-2008
Mensajes: 27
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Contar elementos de un array

Muchas gracias, al final lo he hecho así.
Dos arrays de 100 (para que soporte números entre 0 y 100) y un rand para que genere aleatoriamente los números.

Código C:
Ver original
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <conio.h>
  4.  
  5.  
  6. main()
  7. {
  8. int T[100], i, z, T2[100];
  9.  
  10.    for (i = 0; i <= 99; i++)
  11.    {
  12.         T2[i] = 0;
  13.    }
  14.  
  15.    for (i = 0; i <= 99; i++)
  16.    {
  17.       T[i] = rand() % 101;
  18.    }
  19.  
  20.    for (i = 0; i <= 99; i++)
  21.    {
  22.     for (z = 0; z <= 99; z++)
  23.       {
  24.          if (T[i] == z)
  25.          {
  26.           T2[z]++;
  27.          }
  28.       }
  29.  
  30.    }
  31.  
  32.    printf ("\n\n\n");
  33.    for (i = 0; i <= 99; i++)
  34.    {
  35.     printf ("%d ", T[i]);
  36.    }
  37.    printf ("\n\n\n");
  38.  
  39.    for (i = 0; i <= 99; i++)
  40.    {
  41.        if (T2[i] != 0)
  42.        {
  43.           printf ("\n%d se repite %d veces\n\n", i, T2[i]);
  44.        }
  45.    }
  46.    getch();
  47.  
  48. }

Etiquetas: elementos, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:16.