Nie działająca instrukcja switch.
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Nie działająca instrukcja switch.

AutorWiadomość
Temat założony przez niniejszego użytkownika
Nie działająca instrukcja switch.
» 2016-07-21 14:33:20
Witam. W programie, który próbuję napisać, mam problem z instrukcją switch. Nie działa ona tak jak powinna, a właściwie, to w ogóle nie dizała. Jestem początkujący. Może to błahy problem dla Was, ale nie wiem co zrobić, żeby program działał dobrze.
Jest to ćwiczenie z książki Stephena Praty : Napisz szkielet programu sterowanego z menu. Program ten powinien pokazywać menu zawierające dostępne opcje, każda z nich ma być oznaczona literą. Kiedy użytkownik poda literę inną niż jedna z czterech dopuszczalnych, program ma żądać podania poprawnej wartości tak długo, aż użytkownik spełni to żądanie.Następnie za pomocą instrukcji switch program ma podjąć proste działanie zależne od wyboru użytkownika. Po uruchomieniu program może dać na przykład takie wyniki:
r)     roślinożerca               p) pianista
d)     drzewo                     g) gra
Proszę podać literę r, p, t lub g: q
Proszę podać literę r, p, t lub g: d
Klon jest drzewem.
I ja właśnie posłużyłem się tym przykładem jw.
A oto mój kod:
C/C++
#include <iostream>
using namespace std;
void showmenu();

int main()

{
    showmenu();
    int choice;
    cout << "Prosze podac litere r, p, d lub g:";
    cin >> choice;
    while( choice == 'r' || choice == 'p' || choice == 'd' || choice == 'g' )
    {
        switch( choice )
        {
        case 'r': cout << "Daniel jest roslinozerca.\n";
            break;
        case 'p': cout << "Claudio Arrau jest pianista.\n";
            break;
        case 'd': cout << "Dąb jest wysokim drzewem.\n";
            break;
        case 'g': cout << "FIFA 16 to świetna gra.\n";
            break;
        default: cout << "Prosze podac litere r, p, t lub g:" << endl;
            break;
        }
        cin >> choice;
    }
   
}
void showmenu()
{
    cout << "r) roslinozerca         p) pianista\n";
    cout << "d) drzewo               g) gra\n";
}


                                                                           
 
P-150172
» 2016-07-21 14:36:56
zmienna choice powinna być typu char
P-150173
» 2016-07-21 14:37:47
zmień typ dla zmiennej "choise"

char choice;

P-150174
Temat założony przez niniejszego użytkownika
» 2016-07-21 14:42:25
A dlaczego nie działa default? Możecie jeszcze "rzucić na to okiem"?
P-150175
» 2016-07-21 14:48:12
Z powodu warunku pętli while, jej ciało nie zostanie wykonane gdy litera nie jest jedną z: r,p,d,g
P-150176
Temat założony przez niniejszego użytkownika
» 2016-07-21 15:16:16
Już zrobiłem tak, że pojawia mi się komunikat, tylko jak wpisuję literę r, p, t lub g wywala mi ekran.
P-150177
» 2016-07-21 16:24:51
coś takiego chciałeś ??
C/C++
#include <iostream>
#include<limits>

using namespace std;
void showmenu();

int main()

{
    showmenu();
    char choice;
    cout << "Prosze podac litere r, p, d lub g:";
   
    //pętla while - póki wczytanie sie niepowiedzie lub wczytano z poza przedziału
    while((( cin >> choice ) == false ) ||( choice != 'r' && choice != 'p' && choice != 'd' && choice != 'g' ) )
    {
        cout << "zly wybor poonow probe" << endl;
        cin.clear();
        cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
       
    }
   
    switch( choice )
    {
    case 'r': cout << "Daniel jest roslinozerca.\n";
        break;
    case 'p': cout << "Claudio Arrau jest pianista.\n";
        break;
    case 'd': cout << "Dąb jest wysokim drzewem.\n";
        break;
    case 'g': cout << "FIFA 16 to świetna gra.\n";
        break;
    }
   
   
}
void showmenu()
{
    cout << "r) roslinozerca         p) pianista\n";
    cout << "d) drzewo               g) gra\n";
}
P-150179
Temat założony przez niniejszego użytkownika
» 2016-07-21 17:31:47
Tak, coś takiego. A czy mógłbyś mi jeszcze powiedzieć, gdzie popełniłem błąd? Bo ja próbowałem napisać tak, żeby mi wypisywało polecenie do momentu, gdy poda się literę p, r , d lub g.
P-150183
« 1 » 2
 Strona 1 z 2Następna strona