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

Wykonywanie pętli w nieskończoność

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
–1 głos
635 wizyt
pytanie zadane 4 lutego 2017 w C i C++ przez fatalFOx Początkujący (300 p.)

Dlaczego pętla wykonuje się w nieskończoność?

 
 if(wyborwalka==1)
            {
                do{
                cout<<"Atakujesz...";
                Sleep(2000);
                system("cls");
                cout<<""<<imie<<endl;
                cout<<"HP:60"<<endl;
                cout<<"OBRAZENIA:20"<<endl;
                cout<<"****************"<<endl;
                cout<<"GOBLIN"<<endl;
                cout<<"HP:"<<goblinhp-bohaterobrazenia<<endl;
                cout<<"OBRAZENIA:7"<<endl;
                Sleep(2000);
                system("cls");
                cout<<"Goblin atakuje...";
                Sleep(2000);
                cout<<""<<imie<<endl;
                cout<<"HP:"<<bohaterhp-goblinobrazenia<<endl;
                cout<<"OBRAZENIA:20"<<endl;
                cout<<"****************"<<endl;
                cout<<"GOBLIN"<<endl;
                cout<<"HP:"<<goblinhp-bohaterobrazenia<<endl;
                cout<<"OBRAZENIA:7"<<endl;
                }while(goblinhp!=0);
                cout<<"Wygrales!"<<endl;
            }

3 odpowiedzi

0 głosów
odpowiedź 4 lutego 2017 przez Miszo Bywalec (2,100 p.)
wybrane 6 lutego 2017
 
Najlepsza
Pewnie zmienna goblinhp zawsze jest różna od 0, ile ona wynosi na początku? Nie widzę też zmiany jej wartości.
komentarz 4 lutego 2017 przez fatalFOx Początkujący (300 p.)
Na początku wynosi 25
komentarz 4 lutego 2017 przez Miszo Bywalec (2,100 p.)

No właśnie i dlaczego miała by mieć nagle 0, żeby pętla się przerwała? Nigdzie odjąłeś jej tych 25.

goblinhp = goblinhp - 25

 

0 głosów
odpowiedź 4 lutego 2017 przez niezalogowany

W warunku pętli jest "robic petle dopóki hp goblina bedzie rozne od zera". Ale jak będzie -5 to też będzie robić pętle. Zmień warunek na:

while(goblinhp>0);

 

komentarz 4 lutego 2017 przez fatalFOx Początkujący (300 p.)
Nie pomaga
komentarz 5 lutego 2017 przez Adrian Spora Mądrala (5,100 p.)
edycja 5 lutego 2017 przez Adrian Spora
Problem jest w tym, że nie uaktualniasz zmiennej goblinhp o nową wartość. Spójrz na moją odpowiedź.
0 głosów
odpowiedź 5 lutego 2017 przez Adrian Spora Mądrala (5,100 p.)

Jeśli bohater zadaje cios to zmiana ilości hp goblina musi nastąpić za pomocą ponownego przypisania ilości hp do zmiennej goblinhp, a u Ciebie tego nie ma. Jest:
 

... << goblinhp-bohaterobrazenia << ...



To co tutaj robisz to tworzysz zmienną anonimową w postaci uaktualnionego życia goblina, ale nie przypisujesz tej wartości do zmiennej goblinhp. Powinno być:
 

goblinhp -= bohaterobrazenia; 
//... 
... << goblinhp << ...



I jak Hipcio, słusznie zauważył, warunek wyjścia z pętli powinien być zmieniony.

komentarz 5 lutego 2017 przez fatalFOx Początkujący (300 p.)
Dzięki, już działa

Podobne pytania

0 głosów
4 odpowiedzi 865 wizyt
+1 głos
2 odpowiedzi 181 wizyt
0 głosów
1 odpowiedź 944 wizyt
pytanie zadane 16 marca 2020 w C i C++ przez Oxhoft Nowicjusz (150 p.)

93,103 zapytań

142,077 odpowiedzi

321,562 komentarzy

62,445 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 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...