Clasificar números en C++

Por medio de un comentario Gaby me pidió un programa que:

“Genere 10 números aleatorios del 0 al 50 y los clasifique en 2 rangos: menores que 10 y mayores que 10 pero menores que 20.”

A nosotros nos sirve para practicar el uso de números random, de matrices y de ciclos.

El programa es este:

#include
#include
#include
using namespace std;
int main()
{
    int numrnd[10], cls1[10]={0}, cls2[10]={0}, ct1=0, ct2=0;
    srand(time(NULL));
    cout << "Los numeros: ";
    for(int i=0; i<=9; i++)
    {
        numrnd[i] = rand() % 51;
        cout << numrnd[i] << ", ";
        if(numrnd[i]  10 && numrnd[i] < 20)
        {
            cls2[ct2] = numrnd[i];
            ct2++;
        }
    }
    cout << endl << "Menores que 10: ";
    for(int i=0; i<ct1; i++)
        cout << cls1[i] << ", ";
    cout << endl << "Mayores que 10 y menores que 20: ";
    for(int i=0; i<ct2; i++)
        cout << cls2[i] << ", ";
}
  • Para dudas respecto a la generación de números random está este post: Obtener números aleatorios en C++.
  • Para dudas respecto a la declaración y uso de matrices está este otro post: ¡Ah nunca he escrito sobre matrices!, voy a tener que ponerme a ello.
  • Para dudas con respecto a los ciclos for, sí tengo un post: Ciclos for en C++.

Tenemos 3 matrices, en la primera guardamos nuestros 10 números aleatorios, en la segunda los números que queden en la primera clasificación (menores que 10) y en la tercera los que queden en la segunda clasificación. Así que lo que hacemos es ir traspasando los valores de la primera matriz a las otras dos según su valor. Para esto tenemos que llevar en el mismo ciclo 3 cuentas diferentes, una para cada matriz.

Las variable ct1 y ct2 se encargan de ir cambiando los índices de las matrices cls1 y cls2 respectivamente, por lo que sólo deben aumentar cuando en realidad sea necesario.

Después lo único necesario es mostrar nuestras dos matrices. Como cada matriz puede tener un número de elementos diferentes cada vez, tenemos que hacer dos ciclos, uno para cada matriz con ct1 o ct2 como límite.

Como última aclaración sólo digo que, tal como dice el problema, el número 10 nunca va a quedar clasificado en algún rango porque el 10 no es menor que 1o y tampoco es mayor que 10.

12 thoughts on “Clasificar números en C++

  1. Me gustan mucho tus ejemplos con sus explicaciones además de tu predisposición positiva. Aprendo mucho. Una preguntilla de pricipiantes: Por que no le das ningún valor de retorno a la función principal int main() ?
    Gracias

    1. Cuando retornamos un valor 0 desde el main significa que el programa ha corrido sin problemas (por eso va al final), si omitimos retornar algún valor pues no hay ningún problema, aunque lo recomendable es siempre retornar un valor. No es necesario, pero es una buena práctica de programación. O sea que la respuesta es: Sí debí retornar un valor 0 en el main, pero se me pasó hacerlo.

      Que gusto que te guste mi blog🙂

  2. hola que tal me llamo alberto y solo tengo una duda de donde puedo encontrar como un manual de codigo donde explique para que y como se utiliza cada uno. o tal vez tu me puedas ayudar seria muy util para mi si garacias

  3. otro favor esque me dejaron un trabajo de la escuela.
    hacer un codigo en c++ de como resolver las ecuacines de segundo grado pero por el metodo de gauss-jordan.
    y la verdad es que todavia no se programar bien por eso es que te pedi la ayuda de donde encontrar mas informacion.
    entonces a lo que quiero llegar con esto es que si tu me puedes ayudar a hacerlo te lo agradeceria y me seria muy util.
    gracias

  4. disculpa pero si quiero generar numero aleatorios de 0 a 51 pero que esten todos los numeros en un arreglo si sirve?. Por ejemplo
    for(c=0;c<52;c++)
    {
    num=rand()%52;
    arreglo[c]=num;
    }

    Digamos que la primera vez genera el 2 y lo inserta en arreglo[0], pero la segunda vez genera 51 y así sucesivamente pero yo quiero que me genere los 51 numeros aleatoriamente para guardarlo en un arreglo en forma aleatoria. Si sirve en estos casos?. Es para bareajar el poker y mostrar en pantalla de forma aleatoria

  5. QUIEN PODRIA REALIZAR ESTE PROGRAMA:
    LOS RESULTADOS DE LAS ULTIMAS ELECCIONES HA ALCALDE EN EL PUEBLO X, HAN SIDO LAS SIGUIENTES:

    DISTRITO CANDIDATO A CANDIDATO B CANDIDATO C CANDIDATO D
    1 194 43 206 45
    2 180 20 320 16
    3 221 90 140 20
    4 432 50 821 14
    5 820 61 946 18

    REALIZAR UN PROGRAMA QUE REALICE LAS SIGUIENTES TAREAS:

    A) IMPRIMIR LA TABLA ANTERIOR CON CABECERA INDIVIDUALES.
    B) CALCULAR O IMPRIMIR EL NUMERO TOTAL DE VOTOS, RECIBIDOS POR CADA CANDIDATO Y EL PORCENTAJE DEL TOTAL DE VOTOS EMITIDOS, ASI MISMO VISUALIZAR EL CANDIDATO MAS VOTADO.
    C)SI ALGUN CANDIDATO RECIBE MAS DEL 50% DE LOS VOTOS, EL PROGRAMA RECIBIRA UN MENSAJE DECLARANDO GANADOR.

  6. hola
    estoy muy apurada por realizar este programa no se programar bien y por eso estoy pidiendo ayuda…
    hacer un programa que realice lo siguiente.
    1una persona invierte 10000 en una cuenta de ahorro con un 5% de interes . se asume que todo el interes se deja como deposito en la cuenta, calcule y despliegue el acumulado de la cuenta al final de casa año durante 10 años

  7. Hola, me sirve mucho tus explicaciones, estan muy concretas.

    Yo tengo una duda, para qu sirve esta libreria, he visto que la ocupas bastante en tus programas:

    #include<ctime>
  8. hola soy ynhafhetzhe !!!
    soy nueva en esto de la programacion y la verdad no le estoy entendiendo mucho, queria ver si me puedes ayudar con un codigo que es de CLASES Y OBJETOS ya que la maestra que nos lo imparte no lo explica muy bien que digamos.

    El codigo que nos dejo es el siguiente:

    el sistema debera permitir que los clientes consulten el catalogo de pelicula.
    apartir del mismo una vez seleccionada una pelicula se debera poder acceder a la informacion de la misma como es su clasificacion, su genero y un breve resumen de la misma.
    asimismo opcionalmente se debera poder consultar la disponibilidad del video.

    ahora , los empleados del video club deberan poder atravez del sistema, registrar las ventas y rentas y devoluciones por parte de los clientes y consultar, dado un cliente que este posea en renta.
    otra es que sie el cliente no estra registrado el programa nos permita darlo de alta.
    tambien que el programa genera de forma automatica un informe que muestre todos los clientes que se encuentran atrasados con sus devoluciones.
    osea que todos los dias a las 9 de la mañana imprima o muestre en pantalla el listado de los clientes.

    EN VERDAD ME GUSTARIA QUE ME AYUDARAS YA QUE LO TENGO QUE ENTREGAR EL VIERNES PERO HE INTENTADO HACERLO Y EN VERDAD NO ME SALE .

    TE AGRADECERE TU AYUDA EL RESTO DE MI VIDA.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s