Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Program nie działa tak jak powinien.


Rekomendowane odpowiedzi

Opublikowano
Witam.

Mam pewien problem z programem ktory pisze tak dla zabawy i pojawil mi sie w nim pewien blad. Oto kod:

 

 

#include <iostream>

#include <cstdlib>

#include <time.h>

#include <stdio.h>

 

using namespace std;

 

int main(){

    

    for( ; ; ){

            

            int stats_player[5][4];

            

           

            char a,b;

            

            cout<<"wybierz jedno z: t c e p m\n";

            

            do{

            cin>>a;

            }while(a != 't' && a != 'c' && a != 'e' && a != 'p' && a != 'm');

            

            switch(a){

             

             case 't':

stats_player[1][1]=60;

             stats_player[1][2]=20;

             stats_player[1][3]=20;

             stats_player[1][4]=0;

             break;

             

             case 'c':

stats_player[2][1]=55;

             stats_player[2][2]=25;

             stats_player[2][3]=15;

             stats_player[2][4]=0;

             break;

             

             case 'e':

stats_player[3][1]=50;

             stats_player[3][2]=30;

             stats_player[3][3]=10;

             stats_player[3][4]=0;

             break;

             

             case 'p':

stats_player[4][1]=70;

             stats_player[4][2]=30;

             stats_player[4][3]=5;

             stats_player[4][4]=0;

             break;

             

             case 'm':

stats_player[5][1]=50;

             stats_player[5][2]=25;

             stats_player[5][3]=15;

             stats_player[5][4]=0;

            }

            

 

            

if(a == 'p'){

             cout<<"\njesli wybrales p\n";

             stats_player[4][1]+=10;

             stats_player[4][3]+=5;

         }

            

            else{

             cout<<"\njesli wybrales cos innego wybierz jedno z: N L W S\n";

 

do{

cin>>b;

}while(b != 'n' && b != 'l' && b != 'w' && b != 's');

 

             

            }

 

getchar();getchar();

system("cls");

            

            }

    

    

    

    }

 

I chodzi tutaj o to ze switch sie wykonuje ale funkcja if po nim blednie dziala, poniewaz albo do wszystkiego wykonuje sie tylko if albo jesli wybierzemy p to omija if i wykonuje sie tylko else. Nie wiem cos jest zle, no chyba ze moj kompilator cos zle dziala, uzywam dev cpp i przeinstalowywalem juz go.

Opublikowano

ale jest tez pewien problem poniewaz jak zmienilem else na else if (oczywiscie tutaj byly wskozowki co to odpowiednich liter) dzialo sie dokladnie tak samo ze instruckja if zostala pomijana przez program i nie potrafie sobie z tym poradzic. probowalem takze zmienic if na drugiego switcha i to wygladalo tak:

 

switch(a){

case 'c':

case 't';

case 'e':

case 'm':

noi tutaj wybieramy dalej

break;

case 'p':

i tutaj cos innego;

}

 

i nadal nie dziala tak jak powinno poniewaz jak wybiore p wykonuja sie pierwsze casy a nie ostatni tak jak powinno ;/

Opublikowano

Przejrzałem ten kod dokładniej i teraz widzę o co chodzi.

Kod jest prawie ok.

Problemem jest to, że masz tablicę 5x4, a odnosisz się do elementów poza nią (poprawne indeksy dla takiej tablicy to [0..4][0..3]).

Kompilator akurat tak ustawił zmienne w pamięci, że nadpisujesz zmienną a zerem.

Przez to po switchu zmienna a nie ma wartości, której oczekujesz.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...