<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>