Funkcja srand i while

0

W szkole dostałem jako pracę domową napisać program przy użyciu funkcji srand i while. Program ma kolejno wylosować trzy liczby 6 i to wyświetlić. Napisałem coś takiego, ale nie wiem, gdzie jest błąd. Niestety nauczyciel powiedział nam prawie nic o C++, więc próbowałem sam coś zrobić, ale nie wychodzi mi to.

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    setlocale(LC_CTYPE, "Polish");
    int i, j, zm;
    srand(time(NULL));
    while (j <= 3) {
        zm = rand() % 6 + 1;
        {
            cout << zm << "\n";
            j++;
        }
        i++;
    }
    cout << "\nWylosowano j= " << j << " szóstek";
}
1

Deklarujesz zmienną j a nie przypisujesz jej żadnej wartości, to samo jest z i. Z tego co widzę powinno być int j = 1, a i jest Ci w ogóle nie potrzebne

0

@pavarotti: czyli zmienne powinny być równe 0?

0
przekaznik4 napisał(a):

@pavarotti: czyli zmienne powinny być równe 0?

Dlaczego 0? j ma mieć 1 bo chcesz 3 razy wypisać na ekranie a masz w pętli warunek (j <= 3), z i nigdzie nie korzystasz

0

@pavarotti: Poprawiłem to, ale nadal program nie działa, mogę liczyć na jakąś małą podpowiedź, nad czym się skupić?

0
przekaznik4 napisał(a):

... Program ma kolejno wylosować trzy liczby 6 i to wyświetlić. ...

Wylosować trzy liczby 6? Czy rozumiesz czym jest losowanie?

Wnioskuję niepoprawne zrozumienie zadania.

0

Zrozumiałem to tak, że program ma losować liczby, aż nie wylosuje tych trzech szóstek, ale mogę się mylić, nauczyciel powiedział to słownie tylko, w ten sposób: program ma kolejno wylosować trzy liczby 6 i to wyświetlić

0

Moze dopytaj kogos o tresc zadania, bo czegos brakuje. Masz wylosowac trzy szostki, ale z jakiego przedzialu? Skad wziales swoj przedzial? Bo rownie dobrze moze byc to przedzial od 5 do 6, wyjdzie szybciej.
Czy moze ma wylosowac trzy liczby z przedzialu od 1 do 6 i je wypisac? (To juz brzmi sensowniej, po co losowac trzy szostki?)

0

@tmk3: Ma losować liczby z przedziału 1 do 6 i zakończyć działanie, kiedy wypadną te 3 szóstki.

0

@przekaznik4: teraz wydaje się, że działa, tylko czemu, kiedy while (j<3) program losuje mi 3 szóstki, a jak dam while (j<=3) losuje 4

#include <iostream> 
#include <cstdlib>
#include <ctime>
using namespace std;
int main ()
 {                               
 setlocale(LC_CTYPE, "Polish");
int i=0,j=0,zm;
 srand( time( NULL ) );  
  	while (j<3) 
	{ 
		zm=rand()%6 + 1 ;
	    if (zm == 6)
	    {
		   cout <<zm <<"\n";
		    j++;
		}
	i++;
	}
	cout <<"\nWylosowano j= "<<j<<" szóstek";
}

0

Bo zaczynasz od j=0, dla j=0 masz pierwsza liczbe, j=1 masz dwie liczby, czyli przy j=3 masz wylosowane cztery liczby

1

0,1,2 - trzy liczby
0,1,2,3 - cztery liczby

1 użytkowników online, w tym zalogowanych: 0, gości: 1