<br><br><div class="gmail_quote">El 14 de septiembre de 2010 09:52, MuGliDaRk <span dir="ltr"><<a href="mailto:muglidark@gmail.com">muglidark@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<b>Un ejercicio:<br><br>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.<br><br>nota:<br>Un numero puede repetirse.<br><br>Es un ejercicio, que a simple vista, parece facil, pero tiene, sus detalles.... <br>
<br></b><br></blockquote></div>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++<br><br>#include <cstdlib><br>#include <iostream><br>#include <stdlib.h><br>
using namespace std;<br><br>int suma(int lista_numeros[19]);<br><br>int main(int argc, char *argv[])<br>{<br> int lista_numeros[19], c;<br> srand (time(NULL));<br> for( c = 0; c <=19; c++)<br> lista_numeros[c] = 0;<br>
// genero los números aleatorios para rellenar el array<br> for( c = 0; c <=19; c++)<br> {<br> //si está lejos del final permitimos aleatorios<br> if (c < 17)<br> {<br> // si la suma es baja permitimos números altos<br>
if (suma(lista_numeros) <= 320)<br> lista_numeros[c] = rand() % (rand() % 182);<br> // si no trabajamos con la diferencia<br> else <br> lista_numeros[c] = rand() % (500 - (suma(lista_numeros)+1));<br>
}<br> else if ( c == 17 )<br> {<br> // si vamos llegando al final y la suma es baja forzamos<br> //números altos<br> if ( suma(lista_numeros) <= 140)<br> lista_numeros[c] = (rand() % 41) + 140;<br>
}<br> else if ( c <19 )<br> // en las dos últimas posiciones se trabaja por diferencia<br> lista_numeros[c] = rand() % (500 - suma(lista_numeros)+1);<br> else<br> lista_numeros[c] = 500 - suma(lista_numeros);<br>
<br>}<br>//se muestran los números<br> for ( c = 0 ; c <= 19 ; c++)<br> cout << lista_numeros[c] << endl;<br>// y la suma<br> cout << endl << suma(lista_numeros) << endl ;<br> <br>
system("PAUSE");<br> return EXIT_SUCCESS;<br><br>};<br><br><br>int suma (int lista_numeros[19])<br>{<br> int total = 0, c;<br> for (c = 0 ; c <= 19 ; c++)<br> total += lista_numeros[c];<br>
return total;<br>}<br><br>