Duda sobre programa en C

Me gustaría que me ayudaran a solucionar esta que tengo sobre un programa en C, compilado con Borland C++ 4.5.
Este programa hace lo siguiente:
Genera una secuencia aleatoria de N números (supongamos que sale esta secuencia): 12, 5, 7, 5, 8 y cuenta las veces que aparece cada numero:
El programa mostraría lo siguiente:
El numero 12 aparece 1 veces
El numero 7 aparece 1 veces
El numero 8 aparece 1 veces
El numero 5 aparece 1 veces
El numero 5 aparece 1 veces
Pero necesito que muestre esto:
El numero 12 aparece 1 veces
El numero 7 aparece 1 veces
El numero 8 aparece 1 veces
El numero 5 aparece 2 veces
Aquí dejo el código:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
int main(void)
{
int i=0, n=0, suma=0;
int *v;
int x=0, j=0;
randomize();
printf("\n ***** N numeros 'aleatorios' ***** \n\n");
printf("\n ¿Cuantos numeros desea que se generen?: ");
scanf ("%d",&n);
fflush(stdin);
v = new int[n];
printf("\n\nLos %d numeros generados son:", n);
for (i=0; i<n; i++)
{
  fflush(stdin);
  printf(" %d", (v = rand() % 37));
}
getch();
//Aquí empezamos a contarlos
for (i=0;i<n;i++)
 {
  fflush(stdin);
  x=0; //x tendrá el numero de repeticiones
   fflush(stdin);
   for (j=0;j<n;j++)
   {
     fflush(stdin);
     if ( v==v[j] ) //Aqui se compara cada numero (v) con toda la secuencia completa aleatoria de numeros (v[j])
     {
      fflush(stdin);
      x++;
     }
   }
   fflush(stdin);
   printf("\n\nEl número %d aparece %d veces\n",v,x);
 }
} //MAIN
//   "n"       es el numero de numeros que el usuario
//   "v"  es el numero que sale cada vez
// "i" Si se pone antes del if, muestra la posición que ocupa cada numero (empezando desde 0)
//   "x"   es las veces que sale cada numero
// "v[j]" Es toda la secuencia completa de los números (si se pone antes del if)
// "j" Si se pone antes del if, muestra el numero de números (empezando desde el 0) que hay en cada secuencia

1 respuesta

Respuesta
1
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
int main(void)
{
int i=0, n=0, suma=0;
int *v;
int aux;
int x=0, j=0;
randomize();
printf("\n ***** N numeros 'aleatorios' ***** \n\n");
printf("\n ¿Cuantos numeros desea que se generen?: ");
scanf ("%d",&n);
fflush(stdin);
v = new int[n];
printf("\n\nLos %d numeros generados son:", n);
for (i=0; i<n; i++)
{
  fflush(stdin);
  v =  (rand() % 37);
  printf(" %d", v);
}
getch();
// primero organizamos los datos por metodo burbuja
            for (i=0; i<n; i++)
                for (j=0; j<n; j++)
                    {
                        if(v>v[j])
                            {
                                 aux=v;
                                 v=v[j];
                                 v[j]=aux;
                            }
                    }
 x=0;
//Aquí empezamos a contarlos
for (i=0;i<n;i=x+i)// x+i para no contar de nuevo los numeros ya contados aprovechando que han sido ordenados
 {
  fflush(stdin);
  x=0; //x tendrá el numero de repeticiones
    fflush(stdin);
    for (j=0;j<n;j++)
    {
      fflush(stdin);
      if ( v==v[j] ) //Aqui se compara cada numero (v) con toda la secuencia completa aleatoria de numeros (v[j])
      {
        fflush(stdin);
        x++;
      }
    }
    fflush(stdin);
    printf("\nEl número %d aparece %d veces",v,x);
 }
} //MAIN
Nota
Simplemente los ordene y cuando los muestro me vuelo los ya contados, prueba el código, yo también lo hice con el compilador que esta usando
Coloca este no uses el de arriba
Bendiciones David
No se que pasa, no se como pegarlo en la página mejor enviame tu correo y te mando el código.
Bendiciones David
No hace falta, simplemente era sustituir v por "v corchete i" :D, no se por que yo tampoco podía pegarlo aquí. Era justo lo que quería. Muchísimas gracias :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas