[C con Clase] Problema con numeros aleatorios para todos....
Yolmer Rosales
yolmer.rosales en gmail.com
Jue Sep 16 18:00:13 CEST 2010
El 14 de septiembre de 2010 09:52, MuGliDaRk <muglidark en gmail.com> escribió:
> *Un ejercicio:
>
> Listar 20 numeros aleatorios, que cada numero pueda estar en el intervalo
> de 0 a 180, ademas que la suma de los 20 numeros resulte 500.
>
> nota:
> Un numero puede repetirse.
>
> Es un ejercicio, que a simple vista, parece facil, pero tiene, sus
> detalles....
>
> *
>
Amigos tengo una propuesta de solución pero quiero ver que opinan uds auqí
les dejo el codigo probado en win xp con Dev-C++
#include <cstdlib>
#include <iostream>
#include <stdlib.h>
using namespace std;
int suma(int lista_numeros[19]);
int main(int argc, char *argv[])
{
int lista_numeros[19], c;
srand (time(NULL));
for( c = 0; c <=19; c++)
lista_numeros[c] = 0;
// genero los números aleatorios para rellenar el array
for( c = 0; c <=19; c++)
{
//si está lejos del final permitimos aleatorios
if (c < 17)
{
// si la suma es baja permitimos números altos
if (suma(lista_numeros) <= 320)
lista_numeros[c] = rand() % (rand() % 182);
// si no trabajamos con la diferencia
else
lista_numeros[c] = rand() % (500 - (suma(lista_numeros)+1));
}
else if ( c == 17 )
{
// si vamos llegando al final y la suma es baja forzamos
//números altos
if ( suma(lista_numeros) <= 140)
lista_numeros[c] = (rand() % 41) + 140;
}
else if ( c <19 )
// en las dos últimas posiciones se trabaja por diferencia
lista_numeros[c] = rand() % (500 - suma(lista_numeros)+1);
else
lista_numeros[c] = 500 - suma(lista_numeros);
}
//se muestran los números
for ( c = 0 ; c <= 19 ; c++)
cout << lista_numeros[c] << endl;
// y la suma
cout << endl << suma(lista_numeros) << endl ;
system("PAUSE");
return EXIT_SUCCESS;
};
int suma (int lista_numeros[19])
{
int total = 0, c;
for (c = 0 ; c <= 19 ; c++)
total += lista_numeros[c];
return total;
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100916/4e7b8e1e/attachment.html>
Más información sobre la lista de distribución Cconclase