[C con Clase] Problema con numeros aleatorios para todos....

José Luis anonymous.mx en gmail.com
Jue Sep 23 16:56:33 CEST 2010


>
> Hola MuGliDaRk,
>
> Modifiqué un codigo enviado anteriormente para hacer lo comentado en 4
> pasos.
>
> #include <stdio.h>
> #include <string.h>
> #include <stdlib.h>
> #include <time.h>
>  int main(int argc, char *argv[])
> {
>     int lista_numeros[19], c, suma;
>     double factor;
>     srand (time(NULL));
>     suma=0;
> //1.- Generar los 20 numeros aleatorios con valores entre 1 y 180 y
> almacenarlo en un array con valores que contengan 3 decimales.
>
>     for( c = 0; c <=19; c++)
>     {
>        lista_numeros[c] = (int) rand() % 179;
>        suma = suma + lista_numeros[c];
>     }
> //2.- Hacer la siguiente division (500 / la suma de los 20 numeros
> aleatorios) llamar la variable factor
>     factor = (double) (500.0 / suma);
>     suma=0;
> //3.- Multiplicar los 19 primeros numeros por el factor  y redondear su
> valor sin decimales
>     for( c = 0; c <=18; c++)
>     {
>        lista_numeros[c] = (int) lista_numeros[c] * factor;
>        suma = suma + lista_numeros[c];
>     }
> //4.- El ultimo numero debe ser la diferencia de 500 - la suma de los
> primeros 19 numeros.
>     if ((500-suma)<=180) lista_numeros[19] = 500-suma;
>     else
>     {
>        lista_numeros[19] = 180;
>        for( c = 0; c <=18; c++)
>        {
>    if ((lista_numeros[c]+500-suma-180)<=180)
>           {
>              lista_numeros[c] = lista_numeros[c]+500-suma-180;
>       break;
>    }
>        }
>     }
>    //se muestran los números
>    suma=0;
>    printf("---------------------------\n");
>    printf("Lista de numeros aleatorios\n");
>    printf("---------------------------\n");
>
>     for ( c = 0 ; c <= 19 ; c++)
>     {
>        printf("%5d\n",lista_numeros[c]);
>        suma=suma+lista_numeros[c];
>     }
>    // y la suma
>    printf("---------------------------\n");
>    printf("Suma de numeros aleatorios\n");
>    printf("---------------------------\n");
>    printf("%5d\n",suma);
>
>    system("PAUSE");
>     return EXIT_SUCCESS;
> };
>
> Saludos desde Villahermosa, Tabasco, Mexico, America, Tierra.
> José Luis
>
>
>
> 2010/9/21 anonymous.mx <anonymous.mx en gmail.com>
>
>  Hola MuGliDaRk,
>>
>> Creo que la solución es mas sencilla.
>>
>> 1.- Generar los 20 numeros aleatorios con valores entre 1 y 180 y
>> almacenarlo en un array con valores que contengan 3 decimales.
>> 2.- Hacer la siguiente division (500 / la suma de los 20 numeros
>> aleatorios) llamar la variable factor
>> 3.- Multiplicar los 19 primeros numeros por el factor  y redondear su
>> valor sin decimales
>> 4.- El ultimo numero debe ser la diferencia de 500 - la suma de los
>> primeros 19 numeros.
>>
>> Ejemplo:
>>   # Aleat New Aleat Operacion realizada
>>      No.01 161.855 42 042= redondear(161.855*0.260) No.02 73.949 19 019=
>> redondear(73.949*0.260) No.03 15.814 4 004= redondear(15.814*0.260) No.04
>> 28.350 7 007= redondear(28.35*0.260) No.05 105.447 27 027=
>> redondear(105.447*0.260) No.06 126.852 33 033= redondear(126.852*0.260)
>> No.07 113.734 30 030= redondear(113.734*0.260) No.08 31.948 8 008=
>> redondear(31.948*0.260) No.09 126.060 33 033= redondear(126.06*0.260)
>> No.10 110.066 29 029= redondear(110.066*0.260) No.11 177.311 46 046=
>> redondear(177.311*0.260) No.12 50.574 13 013= redondear(50.574*0.260)
>> No.13 25.202 7 007= redondear(25.202*0.260) No.14 163.395 42 042=
>> redondear(163.395*0.260) No.15 172.220 45 045= redondear(172.22*0.260)
>> No.16 71.573 19 019= redondear(71.573*0.260) No.17 49.154 13 013=
>> redondear(49.154*0.260) No.18 98.523 26 026= redondear(98.523*0.260)
>> No.19 136.967 36 036= redondear(136.967*0.260) No.20 86.608 21 021= 500 -
>> suma(479)
>>
>>
>> Saludos desde Villahermosa, Mexico, America, Tierra.
>> José Luis
>>
>>
>> 2010/9/18 MuGliDaRk <muglidark en gmail.com>
>>
>> Pues bien, este problema se me ocurrio, a raiz, de una problematica, para
>>> llenar, varios miles de fichas con valores, aleatorios...... y con rangos
>>> definidos.
>>>
>>> El echo es que me parecio interesante, lanzarcelos a Uds. ya que parecia
>>> muy sencillo pero tenia cierto detallito, que la hacia, un buen problema.
>>>
>>> Estoy ideando otro problemita, de estos... es sin duda un buen ejercicio,
>>> para los que estan en entrenamiento.
>>>
>>>
>>> El 17 de septiembre de 2010 22:28, David <xdrtas en yahoo.es> escribió:
>>>
>>>  Hola, esta solución lo planteé yo! Un problema realmente interesante...
>>>> Tampoco sé quién lo sugirió pero me recordó a los problemas que me daban en
>>>> las clases de programación. Así que lo intenté, se aproxima bastante pero no
>>>> lo resuelve perfectamente ya que el último número puede pasar de 180, sin
>>>> embargo, ahí queda para que el que se anime lo mejore.
>>>>
>>>>
>>>> Un cordial saludo.
>>>>
>>>> David Lastra.
>>>>
>>>> http://xdrtas.coolpage.biz/
>>>> http://xdrtas.blogspot.com/
>>>>
>>>>
>>>>  ------------------------------
>>>> *De:* MuGliDaRk <muglidark en gmail.com>
>>>>
>>>> *Para:* Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
>>>> *Enviado:* vie,17 septiembre, 2010 16:24
>>>>
>>>> *Asunto:* Re: [C con Clase] Problema con numeros aleatorios para
>>>> todos....
>>>>
>>>> Eh estado revisando las propuestas de todos uds.
>>>> *
>>>> Y quiero decirles, lo que mas se acerca a al enunciado del problema, es
>>>> esta.... lo pongo, ya que no me acuerdo, quien de uds. lo envio.
>>>> pero es buena esta propuesta.................... y la que mas se acerca-
>>>> *
>>>>
>>>>
>>>> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>>> #include <iostream>
>>>>
>>>> using namespace std;
>>>>
>>>> const int LIMITE = 500;
>>>>
>>>> int main(int argc, char *argv[]) {
>>>>
>>>>     int NumAct = 0;
>>>>     int SumTot = 0;
>>>>     int SumLoc = 0;
>>>>     int ListNum[20];
>>>>     int Bucle = 1;
>>>>     bool Fin = false;
>>>>     bool flag = false;
>>>>
>>>>     while(Bucle <= 20)
>>>>     {
>>>>         SumLoc = 0;
>>>>
>>>>         if(Bucle == 20)
>>>>         {
>>>>             if(SumTot < LIMITE)
>>>>             {
>>>>                 NumAct = LIMITE - SumTot;
>>>>                 ListNum[Bucle-1] = NumAct;
>>>>                 SumTot = SumTot + NumAct;
>>>>                 cout << "\nEl ultimo valor debe ser: " << NumAct <<
>>>> endl;
>>>>             }
>>>>             else
>>>>             {
>>>>                 ListNum[Bucle-1] = 0;
>>>>             }
>>>>         }
>>>>         else
>>>>         {
>>>>             while(Fin == false)
>>>>             {
>>>>                 cout << "\nIntroduzca un valor entre 0 y 180: ";
>>>>                 cin >> NumAct;
>>>>                 if(NumAct < 0 || NumAct > 180)
>>>>                 {
>>>>                     cout << "\nError. Tiene que ser un valor entre 0 y
>>>> 180." << endl;
>>>>                     Fin = false;
>>>>                 }
>>>>                 else
>>>>                 {
>>>>                     SumLoc = SumTot + NumAct;
>>>>                     if(SumLoc > LIMITE)
>>>>                     {
>>>>                         SumLoc = LIMITE - SumTot;
>>>>                         cout << "\nError. El ultimo valor introducido
>>>> excede el limite. Numero Actual no puede ser mayor que: " << SumLoc << endl;
>>>>                         Fin = false;
>>>>                     }
>>>>                     else
>>>>                     {
>>>>                         Fin = true;
>>>>                         if(SumLoc == LIMITE && flag == false)
>>>>                         {
>>>>                             cout << "\nLa suma total ha llegado al
>>>> limite." << endl;
>>>>                             flag = true; //Para entrar sólo una vez...
>>>>                         }
>>>>                         ListNum[Bucle-1] = NumAct;
>>>>                         SumTot = SumTot + NumAct;
>>>>                     }
>>>>                 }
>>>>             }
>>>>             Fin = false;
>>>>         }
>>>>         Bucle += 1;
>>>>     }
>>>>
>>>>     cout << "\nEl resultado es: " << SumTot << endl;
>>>>     for(int i = 0; i < 20; i++)
>>>>     {
>>>>         cout << i+1 << " :" << ListNum[i] << endl;
>>>>     }
>>>>
>>>>     return 0;
>>>> }
>>>>
>>>>
>>>> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>>>
>>>>
>>>> El 16 de septiembre de 2010 19:11, David <xdrtas en yahoo.es> escribió:
>>>>
>>>>>  Muchas gracias, fue divertido, gracias a tí por avisarme del error de
>>>>> los 0...
>>>>>
>>>>> Un cordial saludo.
>>>>>
>>>>>
>>>>> http://xdrtas.coolpage.biz/
>>>>> http://xdrtas.blogspot.com/
>>>>>
>>>>>
>>>>>  ------------------------------
>>>>> *De:* cristian garrido salas <misterharry147 en gmail.com>
>>>>> *Para:* Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
>>>>> *Enviado:* jue,16 septiembre, 2010 18:59
>>>>>
>>>>> *Asunto:* Re: [C con Clase] Problema con numeros aleatorios para
>>>>> todos....
>>>>>
>>>>> excelente trabajo!! funciona de maravilla, gracias por tomarte la
>>>>> molestia
>>>>>
>>>>> Saludos
>>>>> El 15 de septiembre de 2010 01:43, David <xdrtas en yahoo.es> escribió:
>>>>>
>>>>>>  Hola de nuevo cristian garrido salas,
>>>>>> Ya corregí la aplicación para que cuando coloques sólo ceros al final
>>>>>> te ponga 500 o cualquier otro valor necesario para completar la sumatoria
>>>>>> hasta que sea igual a 500.
>>>>>> A qué dirección te lo envío? Debido a que me reclamaron que no debía
>>>>>> adjuntar archivos por este medio.
>>>>>>
>>>>>>
>>>>>> Un cordial saludo.
>>>>>>
>>>>>> David Lastra.
>>>>>>
>>>>>> http://xdrtas.coolpage.biz/
>>>>>> http://xdrtas.blogspot.com/
>>>>>>
>>>>>>  ------------------------------
>>>>>> *De:* cristian garrido salas <misterharry147 en gmail.com>
>>>>>> *Para:* Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
>>>>>> *Enviado:* mié,15 septiembre, 2010 00:15
>>>>>> *Asunto:* Re: [C con Clase] Problema con numeros aleatorios para
>>>>>> todos....
>>>>>>
>>>>>>  el problema no especifíca que los números aleatorios sean generados
>>>>>>> por el programa o introducidos por el usuario, un usuario también puede
>>>>>>> introducir los números que quiera :-D
>>>>>>>
>>>>>>
>>>>>> jaja, es cierto xD
>>>>>>
>>>>>> y sobre el programa...
>>>>>> lo buscare a ver que onda, estos diagramas ayudan bastante a la hra de
>>>>>> plantearse la solucion a la problematica. gracias
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Lista de correo Cconclase Cconclase en listas.conclase.net
>>>>>>
>>>>>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>>>>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Lista de correo Cconclase Cconclase en listas.conclase.net
>>>>>
>>>>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>>>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Atte.
>>>> _______________________________
>>>>
>>>>
>>>> _______________________________
>>>>
>>>> *Antes de imprimir este mensaje, asegúrese de que sea necesario.
>>>> Proteger el medio ambiente está en nuestras manos.
>>>> Before you print this message, make sure it is necessary. It is in our
>>>> hands to protect our environment.
>>>> *
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Lista de correo Cconclase Cconclase en listas.conclase.net
>>>>
>>>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>>>
>>>
>>>
>>>
>>> --
>>> Atte.
>>> _______________________________
>>>
>>>
>>> _______________________________
>>>
>>> *Antes de imprimir este mensaje, asegúrese de que sea necesario.
>>> Proteger el medio ambiente está en nuestras manos.
>>> Before you print this message, make sure it is necessary. It is in our
>>> hands to protect our environment.
>>> *
>>>
>>>
>>> _______________________________________________
>>> Lista de correo Cconclase Cconclase en listas.conclase.net
>>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>>
>>
>>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100923/c56e2563/attachment.html>


Más información sobre la lista de distribución Cconclase