Losowanie - cały czas 0

2011-10-08 20:08
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;
}
edytowany 1x, ostatnio: madmike, 2011-10-08 20:23

Pozostało 580 znaków

2011-10-08 20:17
0

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

edytowany 1x, ostatnio: Atael, 2011-10-08 20:17

Pozostało 580 znaków

2011-10-08 20:18
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 =.


Pozdro & poćwicz!

Pozostało 580 znaków

2011-10-08 20:23
qwe

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;
} 
edytowany 1x, ostatnio: madmike, 2016-12-13 18:26
Żeby użyć time() musisz dołączyć ctime. Srand działa bardzo dobrze bez innych nagłówków niż cstdlib. Np. w symulacjach ważna jest powtarzalność wyników, więc niezbędny jest znany seed. - Zjarek 2011-10-09 00:29

Pozostało 580 znaków

2011-10-08 20:48
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?

edytowany 1x, ostatnio: pauloisl, 2011-10-08 20:53

Pozostało 580 znaków

2011-10-08 20:59
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;

Pozdro & poćwicz!
edytowany 5x, ostatnio: stfu, 2011-10-08 21:09
Coś mi się wali chrome ;C - stfu 2011-10-08 21:08

Pozostało 580 znaków

2011-10-08 21:31
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.

Pozostało 580 znaków

2011-10-08 21:55
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


Pozostało 580 znaków

2011-10-08 22:24
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;
}

Pozostało 580 znaków

2011-10-08 22:38
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 ==


Pozostało 580 znaków

2011-10-08 23:36
0

w programie brakuje

#include <ctime>
#include <cstdlib>

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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