Program dodający statystyki źle liczy

0

Wczoraj naszła mnie taka ochota, aby napisać mini-gierkę.
Napotkałem 2 problemy:

  1. Program czasami po wprowadzeniu dodaj>stats[4] kończy swoje działanie (nie wiem czemu)
  2. Program źle sprawdza czy dodaj<=stats[4]. Tzn po przypisaniu symbol si/zr/wit i po przypisaniu dodaj powiedzmy 20 program od razu mówi że 20>25.
    Byłbym wdzięczny za pomoc. To jest pierwszy mój dłuższy program :)
 
 while(stats[4]!=0)
      {
            cin>>symbol;     
            cin>>dodaj;
            if(dodaj<=stats[4])
            {
                               if(symbol=="si") stats[1]=stats[1]+dodaj;
                               if(symbol=="zr") stats[2]=stats[2]+dodaj;
                               if(symbol=="wit") stats[3]=stats[3]+dodaj;
                               stats[4]=stats[4]-dodaj;
                               
            }                  
            if(dodaj>stats[4])
            {
                           cout<<"Nie masz tyle pkt do rozdania, rozdaj jeszcze raz"<<endl;
                           stats[4]=stats[4];
            }
            
                        
                
      }
0

Linia stats[4]=stats[4]; nie robi zupełnie nic...

Jakich typów są zmienne stats i dodaj ?

0

Dodaj i stats to inty. Bez tego stats[4]=stats[4] od razu mi kończył działanie program. Taka szybka, może nie koniecznie dobra myśl która trochę mi pomogła

1

Być może chodzi o to, że obecnie z powodu tego, że masz dwa ify zamiast if-else jest możliwe, że wykonują się obydwa ify, np. tak:
stat[4]=25
dodaj=20
i w pierwszym ifie: 20<=25, więc stat[4]=25-20=5
i w drugim ifie: 20>5, więc komunikat...

0

Jutro to sprawdze, ale to brzmi logicznie, głupi błąd. Przynajmniej sie dowiedziałem czegoś nowego.

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