Losowanie - cały czas 0

0

Witam. Mam problem z programem który ma losować liczby z zakresu 0-10 a użytkownik ma zgadywać co to z liczba. Niestety napisałem kod ale program za każdym razem losuje 0. Z góry dzięki za pomoc. :)

 #include <iostream>
#include <math.h>

using namespace std;

int main()
{  int a,b,c;
   
   srand((time(NULL)));
   a=0;
   b=rand()%11;
   do {
       cout<<"podaj (zgadnij) liczbe: ";
       cin>>c;
       a++;
      }while(b=c);
      cout<<"losowano "<<a<<" razy";
   
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

Warunek w while jest źle. Kończy się dla 0 bo b = c = 0 daje false.

0
pauloisl napisał(a)

Niestety napisałem kod ale program za każdym razem losuje 0

Wcale nie. Popatrz sobie na warunek w pętli do..while.
Hint: operator porównania 2 liczb to ==, a nie =.

1

aby użyć sranda musisz dołączyć bibliotekę <ctime>

#include <iostream>
#include <ctime>
using namespace std;


int main()
{
	srand(unsigned(time(NULL)));
	int b,c,a = 0;
	b = rand() % 10 + 1;
	bool exit = false;
	while(!exit)
	{
		cout << "\nPodaj liczbe z zakresu 1-10: ";
		cin >> c;
		a++;
		if(c == b)
			exit = true;
		else
			cout << "Próbuj dalej...";
	}
	cout << "Brawo ! Zgadles za " << a << " razem\n";


	cin.sync();
	cin.get();
	return 0;
} 
0

Dzięki bardzo :)

Mam jeszcze jeden problem:

Napisz program losujący liczby w podanej ilości i określonym przez użytkownika przedziale.

Nie mam pojęcia jak to zrobić pomożecie?

0
  1. Losuj dopóki liczba losowań nie będzie równa liczbie określonej przez użytkownika.
  2. Wylosuj liczbę za pomocą rand() % (zakres_max -zakres_min).
  3. wylosowana_liczba += zakres_min;
0
 #include <iostream>
#include <math.h>

using namespace std;

int main()
{   int p,k,ile,tmp,r,i;
    cout<<"Podaj początek przedzialu: ";
    cin>>p;
    cout<<"Podaj koniec przedzialu: ";
    cin>>k;
    cout<<"Podaj ile liczb chcesz wylosować: ";
    cin>>ile;
    srand(time(NULL));
    if (p>k) {
              tmp=p;
              p=k;
              k=tmp;
              }
    do{
    r=rand()%(k-p+1)+p;
    i++;
    cout<<r<<", ";
    }while(i=ile);
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Coś jest nie tak. Nie wiem co.

0
  1. Nigdzie nie inicjalizujesz zmiennej i
  2. Warunek w while: i=ile to nie jest to samo co i==ile
  3. Warunek w while i tak ma być inny
0

coś zmieniłem lecz wyświetla mi tylko jedną liczbę

 #include <iostream>
#include <math.h>

using namespace std;

int main()
{   int p,k,ile,tmp,r,i;
    i=0;
    cout<<"Podaj początek przedzialu: ";
    cin>>p;
    cout<<"Podaj koniec przedzialu: ";
    cin>>k;
    cout<<"Podaj ile liczb chcesz wylosować: ";
    cin>>ile;
    srand(time(NULL));
    if (p>k) {
              tmp=p;
              p=k;
              k=tmp;
              }
    do{
    r=rand()%(k-p+1)+p;
    ++i;
    cout<<r<<", ";
    }while(i==ile);
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

Warunek w while jest zły! Pomyś, aktualnie masz coś takiego: wykonuj pętle tak długo, aż i jest równe ile. Na starcie i jest równe 0, więc jeżeli ile jest różne od 0 to warunek nigdy nie będzie spełniony. Tam na pewno nie ma być operatora ==

0

w programie brakuje

#include <ctime>
#include <cstdlib>

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