Histograma con números aleatorios y asteriscos

Bueno, tal vez el título quedó muy poco descriptivo, pero la idea es pedir un número de personas, luego se le pediría a cada persona su peso pero nosotros solo vamos a generar un número aleatorio en determinado rango. Luego se clasificaría a esas personas en rangos de peso y al final mostrar una tabla que muestre la frecuencia de cada rango con asteriscos, así:

51-60 ***
61-70 **
71-80 ***
80-91 *
91-mas *****

El código en C++ sería así:

#include<stdlib.h>
#include<iostream>
using namespace std;
 
int main()
{
    int n,c,c2,peso[500],cat[5]={0},lim;
    // n -> numero de personas
    // c y c2 para ciclos
    // peso[500] arreglo para guardar el peso de las personas
    // cat[5] arreglo para guardar el número de personas en cada categoria de peso
    srand(time(NULL)); // Inicializa los números aleatorios
    cout<<"Introduce el número de personas: ";cin>>n;
    for(c=0;c<=n-1;c++)
    {
        peso[c]=51+rand()%(120-51); //guarda un número aleatorio del 51 al 120 en cada elemento del arreglo
        // según su valor se aumenta un elemento de nuestro otro arreglo
        if(peso[c]>50 && peso[c]<=60)
            cat[0]++;
        if(peso[c]>60 && peso[c]<=70)
            cat[1]++;
        if(peso[c]>70 && peso[c]<=80)
            cat[2]++;
        if(peso[c]>80 && peso[c]<=90)
            cat[3]++;
        if(peso[c]>90)
            cat[4]++;
    }
    cout<<"\n";
    for(c=0;c<=4;c++)
    {
        switch(c)
        {
            // segun cada caso imprime algo diferente
            case 0:
                cout<<"51-60\t";
            break;
            case 1:
                cout<<"61-70\t";
            break;
            case 2:
                cout<<"71-80\t";
            break;
            case 3:
                cout<<"81-90\t";
            break;
            case 4:
                cout<<"90-  \t";
            break;
        }
        lim=cat[c]; // no podemos usar un arreglo como limite del ciclo (la verdad
                   // no se porque), entonces lo pasamos a una variable normal
        for(c2=1;c2<=lim;c2++)
                cout<<"*";
        cout<<"\n\n";
    }
    cin.get();cin.get(); // detiene la ejecución al final (es como getch();)
}

A propósito, este programa fue una petición especial de un usuario.

Deja tu comentario