• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

raz wylosowana liczba powtarza sie do konca programu

VPS Starter Arubacloud
0 głosów
245 wizyt
pytanie zadane 13 lipca 2015 w C i C++ przez REJTAN Nowicjusz (180 p.)
moj kod:

#include <iostream>
#include <time.h>
#include <cstdlib>
#include <windows.h>

using namespace std;

 

int main()
{

    int strzal;
    srand(time(NULL));
    int losowa_liczba;
    losowa_liczba = rand()%50+1;
    do
    {
     cout << "wymyslilem sobie liczbe z zakresu od 1 do 50" << endl;
     cout<<"zgadnij jaka to liczba :)"<<endl;
     do
     {

      cin>>strzal;
      int i=1;
      if(strzal==losowa_liczba)
      {
          cout<<"proba nr:"<<i<<"  brawo! udalo ci sie zgadnac! :)"<<endl;
      }
      else if(strzal<losowa_liczba)
      {
          cout<<"proba nr:"<<i<<"  to za malo"<<endl;
      }
      else if
         (strzal>losowa_liczba)
      {
          cout<<"proba nr:"<<i<<"  to za duzo"<<endl;
      }
      i++;
     }while(strzal!=losowa_liczba);
     cout<<"jesli chcesz zagrac jeszcze raz to nacisnij 1";
     int c;
     cin>>c;
     system("cls");
    }while(c==1);
    return 0;
}

problem jest taki ze jesli juz user zgadnie wylosowana liczbe i bedzie chcial zagrac jeszcze raz po nacisnieciu 1 to bedzie ta sama liczba wylosowana, nie rozumiem czemu...

3 odpowiedzi

+2 głosów
odpowiedź 13 lipca 2015 przez Adrian1999 Nałogowiec (34,570 p.)

Ponieważ, umieścileś to przed pętlą, funkcja rand zadziała tyle razy ile razy ją wywołasz. Wywołałeś ją tylko 1 raz na samym początku, działa to na podstawie takiego konstruktora. Na początku wykonuje się cała instrukcja od przypisywania danych do pętli, warunków itd, starczy że umieścisz losowa_liczba = rand()%50+1; przed pierwszym coutem

0 głosów
odpowiedź 13 lipca 2015 przez Dorion300 Szeryf (90,250 p.)
Ponieważ losowa_liczba się nie zmienia, i użyłeś rand tylko jeden raz. Prostym pomysłem jest zrobienie kolejnego rand po napisaniu 1
0 głosów
odpowiedź 13 lipca 2015 przez REJTAN Nowicjusz (180 p.)
no tak teraz juz widze ten blad, dziekuje:). Jest jeszcze jeden problem a niechce zakladac nowego tematu dla takiego drobiazga, otoz program nie chce sie skompilowac a codeblocks pokazuje ze problem jest w 46 linijce, tam gdzie jest zakonczenie petli, przy tym:    }while(c==1) ;

ps. na ten problem nie wplywa gdzie wstawie funkcje rand
komentarz 13 lipca 2015 przez KarolEs Nowicjusz (120 p.)
Zadeklaruj zmienną c pomiędzy using namecpace a int main()

Oto poprawiony kod:

#include <iostream>
#include <time.h>
#include <cstdlib>
#include <windows.h>

using namespace std;

int c;

int main()
{

    int strzal;
    srand(time(NULL));
    int losowa_liczba;

    do
    {
    losowa_liczba = rand()%50+1;
     cout << "wymyslilem sobie liczbe z zakresu od 1 do 50" << endl;
     cout<<"zgadnij jaka to liczba :)"<<endl;
     do
     {

      cin>>strzal;
      int i=1;
      if(strzal==losowa_liczba)
      {
          cout<<"proba nr:"<<i<<"  brawo! udalo ci sie zgadnac! :)"<<endl;
      }
      else if(strzal<losowa_liczba)
      {
          cout<<"proba nr:"<<i<<"  to za malo"<<endl;
      }
      else if
         (strzal>losowa_liczba)
      {
          cout<<"proba nr:"<<i<<"  to za duzo"<<endl;
      }
      i++;
     }while(strzal!=losowa_liczba);
     cout<<"jesli chcesz zagrac jeszcze raz to nacisnij 1";

     cin>>c;
     system("cls");
    }while(c==1);
    return 0;
}
komentarz 13 lipca 2015 przez REJTAN Nowicjusz (180 p.)
a moglbys powiedziec czemu?, i co to da?, bo nie zabardzo ogarniam
komentarz 13 lipca 2015 przez KarolEs Nowicjusz (120 p.)
Ta zmienna musi byc przed pętlą aby ta pętla ją "widziała"

Podobne pytania

+1 głos
1 odpowiedź 12,273 wizyt
pytanie zadane 2 stycznia 2016 w C i C++ przez thekibi27 Bywalec (2,110 p.)
+1 głos
2 odpowiedzi 719 wizyt
pytanie zadane 17 listopada 2017 w C i C++ przez Zorineq Nowicjusz (130 p.)
0 głosów
1 odpowiedź 127 wizyt

92,965 zapytań

141,930 odpowiedzi

321,163 komentarzy

62,299 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...