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

anonymous.mx anonymous.mx en gmail.com
Mie Sep 22 02:05:34 CEST 2010


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/20100921/2934c8d6/attachment.html>


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