Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Lekcja 17] 3 zadanie

Ostatnio zmodyfikowano 2012-02-01 09:43
Autor Wiadomość
sensey9
Temat założony przez niniejszego użytkownika
[Lekcja 17] 3 zadanie
» 2012-01-15 11:16:02
Mam taki problem że program niby działa poprawnie ale za każdym razem wypisuje te same liczby i nie potrafię sobie z tym dać rady. Proszę o pomoc
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int wczytajLiczbe()
{
    int k;
   
   
    do {
        srand( time( NULL ) );
        int liczba =( rand() % 1000 ) + 1;
        return liczba;
        k--;
    }
    while( k > 0 );
   
}
int main()
{
    int ile = 4;
    do
    {
        cout << "wylosowales liczbe: " << wczytajLiczbe() << endl;
        ile--;
    } while( ile > 0 );
   
    return 0;
}
P-48267
Drraven
» 2012-01-15 11:41:25
Po co ci taki dziwny
do..while
 z własnym licznikiem. Lepiej użyj
for
Zobacz sobie jak wylosować cokolwiek.
P-48269
sensey9
Temat założony przez niniejszego użytkownika
» 2012-01-15 12:54:53
Ponieważ uczę się z kursu z tej strony i jestem przy lekcji 17 i nie poznałem jeszcze pętli for for
P-48274
SeaMonster131
» 2012-01-15 13:26:09
srand( time( NULL ) );
 wywołaj tylko raz, a nie w pętli.
A w funkcji wczytajLiczbe() po co Ci zmienna k (której wartość to jakieś śmieci) oraz ta pętla? Skoro wchodzisz do pętli, losujesz wartość, i dajesz return?
P-48275
sensey9
Temat założony przez niniejszego użytkownika
» 2012-01-15 14:03:14
Zrobiłem tak jak mówiłeś, lecz nic to nie zmieniło dalej losuje takie same liczby

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int wczytajLiczbe()
{
    srand( time( NULL ) );
    int liczba =( rand() % 1000 ) + 1;
    return liczba;
}
int main()
{
    int ile = 4;
    do
    {
        cout << "wylosowales liczbe: " << wczytajLiczbe() << endl;
        ile--;
    } while( ile > 0 );
   
    return 0;
}
P-48277
SeaMonster131
» 2012-01-15 14:09:14
wywołaj tylko raz, a nie w pętli.
Ja dalej widzę, iż masz to w pętli :)
P-48279
jsc
» 2012-01-15 14:13:39
Trzeba to zrobić tak:

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int wczytajLiczbe()
{
    int liczba =( rand() % 1000 ) + 1;
    return liczba;
}
int main()
{
    int ile = 4;
   
    srand( time( NULL ) );
   
    do // Ciało pętli na tyle szybko się wykonuje, że gdyby srand( time( NULL ) ) było w int  wczytajLiczbe() to ziarno losowania byłoby wielokrotnie identyczne
    {
        cout << "wylosowales liczbe: " << wczytajLiczbe() << endl;
        ile--;
    } while( ile > 0 );
   
    return 0;
}
P-48280
akwes
» 2012-01-15 15:27:28
@jsc, fajnie ze umiesz takie programy pisać. Ale na tym forum nie robimy gotowców, zwlaszcza osobą, ktore sie ucza i powinny zrobic to same. Nie pomagasz im w ten sposób.
P-48290
« 1 » 2
  Strona 1 z 2 Następna strona