Wątek przeniesiony 2017-07-04 08:10 z C/C++ przez ŁF.

instrukcja warunkowa - dlaczego nie działa zgodnie z oczekiwaniami?

0

Oto mój napisany kod w C++:

#include <iostream>
#include <windows.h>
#include <cstdlib>
using namespace std;

string DobraOdpowiedz;
string ZlaOdpowiedz;
string Odpowiedz;

int main()
{
    cout << "Witaj w quiz'ie o gramatyce jezyka angielskiego!" << endl << endl;

    cout << "Zadamy Tobie 10 pytan odnosnie gramatyki z Jezyka Angielskiego!" << endl << endl;

    Sleep(5000);

    system("cls");

    cout << "Pierwsze pytanie:";

    cout << "A.) 'am'" << endl;

    cout << "B.) 'are'" << endl;

    system("cls");

    cout << "1. Jaki to czasownik 'to be' odpowiadajacy liczbie 'I'?" << endl;

    cout << "A.) 'am'" << endl;

    Sleep(2000);

    cout << "B.) 'are'" << endl;

    Sleep(2000);

    cout << "C.) 'is'" << endl;

    Sleep(2000);

    cout << "D.) 'have'" << endl;

    cout << "Twoja odpowiedz: ";

    cin >> Odpowiedz;

    if(Odpowiedz== "A" || "a" || "a)." || "A).")
    {
        system("cls");

        cout << "Poprawna odpowiedz!";

        Sleep(1500);

        system("cls");
    }
    else
    {
        system("cls");

        cout << "Zla odpowiedz - koniec gry!";
    }


}

Kiedy odpalam program i podaję w pierwszym pytaniu poprawną odpowiedź (A) to wiadomo, program mowi że jest to poprawna odpowiedź. Lecz gdy podam złą odpowiedź (np. B) lub nawet wpisze byle co (np. 666, illuminati, xd, c++) to program dalej mowi ze jest to odpowiedz poprawna... Ktos wie jak poprawic kod, bo tyle juz sie głowie, ale nic nie wymyśliłem :P.

3

if(Odpowiedz== "A" || "a" || "a)." || "A).")
Tak się nie łączy warunków.
if( Odpowiedz == "A" || Odpowiedz == "a" || Odpowiedz == "a)." || Odpowiedz == "A).")

1
if (Odpowiedz== "A" || Odpowiedz == "a" || Odpowiedz == "a)." || Odpowiedz == "A).")
0
if (tolower(Odpowiedz[0]) == 'a' ) { ... }
0

Dzięki unknown za odpowiedź. Quiz teraz śmiga :). Temat do zamknięcia

0

Zmienne globalne: zuo! Nikt nie zwrócił Ci na to uwagi.

0

grzesiek51114 , czyli mówisz, żeby pisać zmienne int ?

1

Nie, kolega zwraca uwagę, że stosowanie zmiennych globalnych to zła praktyka i należy tego unikać.

0

Sparrow_Hawk Dzięki za odpowiedź. Dopiero się ucze C++ i każda taka wiedza się przyda.

1

A zatem dopiero się uczyss i korzystasz namiętnie ze zmiennych globalnych... Pachnie mi to wiadomym nauczycielem. ;)

Kody jego padawanów już nie raz były tutaj krytykowane. Znajdziesz na pewno uczniów pana Z.

Wystrzegaj się go.

0

Hahahah, grzesiek51114 - zgadłeś :D! Tylko pytanie - jednak w komentarzach pod filmami bardzo duża grupa osób go poleca itp. Dlatego pytanie - czemu mam się go wystrzegać? Wydawał się jako dobrze tłumacząca osoba z pozytywnymi opiniami :P

3

Bo te pozytywne opinie wystawiały osoby uczące się, a więc takie, które nie mają wiedzy. Skąd one mogą wiedzieć czy wykładany materiał jest przedstawiony prawidłowo? Fajnie się słucha, kompiluje się, działa wiec na pewno jest dobrze wytłumaczone. Prawda jest jednak zgoła inna, bo stosowanie zmiennych globalnych i metoda kopiego pejsta to nie są dobre rozwiązania, a pan Z. bardzo czesto przedkłada je ponad dobre wzorce. Poszukaj na forum u nas postów o panu Z. Jest tego tak wiele napisane, że nie chce mi się powtarzać. Tym bardziej pisząc z komórki ;)

Był też gość, który po obejrzeniu paru filmików z kursów Zelenta postanowił zrobić własny kurs video. Wszystko wyszło jak na dłoni i zostało mu wypunktowane przez jednego z userów naszego forum.

Raczej zainwestuj w dobrą książkę, a ten kurs sobie daruj.

0

Rozumiem, a jeszcze w sprawie tych globalnych zmiennych. Jakimi innymi można je zastąpić? Bo ja jeszcze trochę nie w temacie :P Coś tylko wiem o zmiennej int

0

Zmiennymi lokalnymi, czyli takimi, które są deklarowane w funkcji. W twoim przypadku wyglądałoby to tak:

#include <iostream>
#include <windows.h>
#include <cstdlib>
using namespace std;
 
int main()
{
    string DobraOdpowiedz;
    string ZlaOdpowiedz;
    string Odpowiedz;
    cout << "Witaj w quiz'ie o gramatyce jezyka angielskiego!" << endl << endl;
 
    cout << "Zadamy Tobie 10 pytan odnosnie gramatyki z Jezyka Angielskiego!" << endl << endl;
 
    Sleep(5000);
 
    system("cls");
 
    cout << "Pierwsze pytanie:";
 
    cout << "A.) 'am'" << endl;
 
    cout << "B.) 'are'" << endl;
 
    system("cls");
 
    cout << "1. Jaki to czasownik 'to be' odpowiadajacy liczbie 'I'?" << endl;
 
    cout << "A.) 'am'" << endl;
 
    Sleep(2000);
 
    cout << "B.) 'are'" << endl;
 
    Sleep(2000);
 
    cout << "C.) 'is'" << endl;
 
    Sleep(2000);
 
    cout << "D.) 'have'" << endl;
 
    cout << "Twoja odpowiedz: ";
 
    cin >> Odpowiedz;
 
    if(Odpowiedz== "A" || "a" || "a)." || "A).")
    {
        system("cls");
 
        cout << "Poprawna odpowiedz!";
 
        Sleep(1500);
 
        system("cls");
    }
    else
    {
        system("cls");
 
        cout << "Zla odpowiedz - koniec gry!";
    }
 
}

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