Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Błąd w kodzie - nadpisywanie zmiennej

Ostatnio zmodyfikowano 2012-04-28 10:04
Autor Wiadomość
Temes
Temat założony przez niniejszego użytkownika
Błąd w kodzie - nadpisywanie zmiennej
» 2012-04-28 08:29:25
Witam, piszę program i mam problem...
Kod:
C/C++
if( Literka1 == LiterkaKomp1 ) {
    Wygrana =( Wygrana + 20 );
} else {
    if( Literka1 == LiterkaKomp2 ) {
        Wygrana =( Wygrana + 20 );
    } else {
        if( Literka1 == LiterkaKomp3 ) {
            Wygrana =( Wygrana + 20 );
        } else {
            if( Literka1 != LiterkaKomp1 && Literka1 != LiterkaKomp2 && Literka1 != LiterkaKomp3 ) {
                Wygrana =( Wygrana - 10 );
            }
        }
    }
}

if( Literka2 == LiterkaKomp1 ) {
    Wygrana =( Wygrana + 20 );
} else {
    if( Literka2 == LiterkaKomp2 ) {
        Wygrana =( Wygrana + 20 );
    } else {
        if( Literka2 == LiterkaKomp3 ) {
            Wygrana =( Wygrana + 20 );
        } else {
            if( Literka2 != LiterkaKomp1 && Literka1 != LiterkaKomp2 && Literka1 != LiterkaKomp3 ) {
                Wygrana =( Wygrana - 10 );
            }
        }
    }
}

if( Literka3 == LiterkaKomp1 ) {
    Wygrana =( Wygrana + 20 );
} else {
    if( Literka3 == LiterkaKomp2 ) {
        Wygrana =( Wygrana + 20 );
    } else {
        if( Literka3 == LiterkaKomp3 ) {
            Wygrana =( Wygrana + 20 );
        } else {
            if( Literka3 != LiterkaKomp1 && Literka1 != LiterkaKomp2 && Literka1 != LiterkaKomp3 ) {
                Wygrana =( Wygrana - 10 );
            }
        }
    }
}

To taka jakby gra. Ktoś obstawia trzy literki, załóżmy A B C. Komputer sprawdza i jeżeli np. komputer wylosował A B H, to tu jest problem. W kodzie widać że jeżeli ktoś trafi to dostaje +20 do wygranej, a jak nie trafi to traci -10. Obstawiałem A B C, a wylosowano A B H. Ile powinienem wygrać? +20, +20, -10 czyli moja wygrana powinna wynosić 40 - 10 = 30. Problem polega na tym, że jeżeli trafiłem liczbę to na niej się zatrzymuje, czyli obstawiałem A B C, wylosowano: A B H to dostaje 20 + 20 = 40, a już nie ma tego -10. Jak obstawiam A B C, a losuje B J K to daje mi 20, a powinienem dostać 0 (20 + (-10) + (-10)) = (20 - 20) = 0.

Jaki jest błąd w kodzie?
P-55508
Admixior
» 2012-04-28 09:27:27
hmm. Lekko chaotyczny ten kod (jak dla mnie) można zapisać to prościej:
C/C++
if( Literka1 == LiterkaKomp1 ) Wygrana += 20;
else if( Literka1 == LiterkaKomp2 ) Wygrana += 20;
else if( Literka1 == LiterkaKomp3 ) Wygrana += 20;
else Wygrana -= 10;

if( Literka2 == LiterkaKomp1 ) Wygrana += 20;
else if( Literka2 == LiterkaKomp2 ) Wygrana += 20;
else if( Literka2 == LiterkaKomp3 ) Wygrana += 20;
else Wygrana -= 10;

if( Literka3 == LiterkaKomp1 ) Wygrana += 20;
else if( Literka3 == LiterkaKomp2 ) Wygrana += 20;
else if( Literka3 == LiterkaKomp3 ) Wygrana += 20;
else Wygrana -= 10;


lub tak:
C/C++
if( Literka1 == LiterkaKomp1 || Literka1 == LiterkaKomp2 || Literka1 == LiterkaKomp3 ) wygrana += 20;
else wygrana -= 10;

if( Literka2 == LiterkaKomp1 || Literka2 == LiterkaKomp2 || Literka2 == LiterkaKomp3 ) wygrana += 20;
else wygrana -= 10;

if( Literka3 == LiterkaKomp1 || Literka3 == LiterkaKomp2 || Literka3 == LiterkaKomp3 ) wygrana += 20;
else wygrana -= 10;


Spróbuj te kody czy są dobre :)
P-55509
Temes
Temat założony przez niniejszego użytkownika
» 2012-04-28 10:04:25
Pierwszy działa, drugiego nie próbowałem - dziękuje bardzo :)
P-55510
« 1 »
  Strona 1 z 1