Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Qba474

Rozwiązany: [C++] Menu

Polecane posty

Witam, niedawno rozpocząłem naukę w C++ i jeszcze niewiele o nim wiem, napisałem już kilka prostych programów i teraz od 4 dni usiłuję napisać jakieś menu tekstowe do swojego programu, ale niestety nie wychodzi mi to. ;/ Korzystałem już z wszelakich poradników w Internecie i innych rzeczy, ale za każdym razem, nawet gdy po prostu skopiuję kod wyskakuje mi jakiś błąd :/ Przeważnie przy funkcji "case". Możecie mi jakoś poradzić jak napisać takie menu? Albo napisać gotowy kod? Z góry dzięki za pomoc :happy:

Link do komentarza
Udostępnij na innych stronach

Można to zrobić np. tak:

char komenda;
while (1) {
    printf("\nCo chcesz zrobic? ");
    scanf("%s",komenda);

    switch(*komenda)
    {
        case 'a':
        // to sie wykona gdy uzytkownik wprowadzi znak a
        break;
            
        case 'b':
        // to sie wykona gdy uzytkownik wprowadzi znak b
        break;
            
        //i tak dalej...
            
        default:
        // to sie wykona gdy wprowadzony znak nie ma przypisanej komendy
        break;
    }
}

Link do komentarza
Udostępnij na innych stronach

Można to zrobić np. tak:
char komenda;
while (1) {
    printf("\nCo chcesz zrobic? ");
    scanf("%s",komenda);

    switch(*komenda)
    {
        case 'a':
        // to sie wykona gdy uzytkownik wprowadzi znak a
        break;
            
        case 'b':
        // to sie wykona gdy uzytkownik wprowadzi znak b
        break;
            
        //i tak dalej...
            
        default:
        // to sie wykona gdy wprowadzony znak nie ma przypisanej komendy
        break;
    }
}

A jak mam to wstawić? Tzn. gdzie? Bo próbuję skompilować i też błąd mam jakiś ;/

Mój kod, wzięty z poradnika na YT.

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int loop=1;
    int choice;
    string getinput;
    
    while(loop==1)
    {
    system("CLS");
    cout << "::Menu::\n\n"
    << "1. Question\n"
    << "2. Exit\n\n";
    cin >> choice;
    switch(choice)
    {
            case 1;
            system("CLS");
            cout << "::Question::\n\n"
            << "are you a programmer ?\n\n"
            cin >> getinput;
            if(getinput=="yes")
            
            system("CLS")
            cout << "You are a great person";
            system("PAUSE");
            } else {
                   system("CLS");
                   cout << "You are not a great person";
                   system("PAUSE");
                   }
            
            case 2;
            if(choice==2)              
    {          
    exit(0);
    }  
    
}

Link do komentarza
Udostępnij na innych stronach

po pierwsze:

po case [wartosc] nie wystepuje srednik, tylko dwukropek;

po drugie:

switch(choice)

{

/*

*/

case 2:

if (choice==2)

}

powtarzasz sie. Nie powtarzaj sie.

po trzecie:

if(getinput=="yes")

system("CLS")

cout << "You are a great person";

system("PAUSE");

wrzuc instrukcje po "if-ie" w klamry

Link do komentarza
Udostępnij na innych stronach

Ja bym to zrobił na twoim miejscu tak:

#include <iostream>
#include <stdlib.h>
#include <string>

using namespace std;

int main()
{
    int i = 0;

    int choice;
    string answer;

    do{

        cout << "::MENU::" << endl;

        cout << "1.Question\n2.Exit\n";
        cin >> choice;

        switch(choice)
        {
            case 1:

            system("cls");

            cout << "Are U a programmer ?" << endl;
            cout << "Answer: ";
            cin >> answer;

            if(answer == "yes" || answer == "YES")
            {
                cout << "You are a great person !";

            }else{
                cout << "You are not a great person.";
            }

            system("cls");

            break;

            case 2:
            i = 1;

            system("cls");

            break;


            default:

            system("cls");

            break;
        }



    }while(i == 0);

    system("PAUSE");

}

Pisane na szybko ale powinno działać. Uwzględniłem to, że chcesz czyścić konsolę po każdym zapytaniu tak, jak w powyższym kodzie. Mistrzem programowania nie jestem ale działa :P.

Link do komentarza
Udostępnij na innych stronach

to jak już wrzycamy kody to jeszcze raki dodam, poprawiony kod Qba474

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int loop=1;
    int choice;
    string getinput;
    
    while(loop==1)
    {
    system("CLS");
    cout << "::Menu::\n\n"
        << "1. Question\n"
        << "2. Exit\n\n";
    cin >> choice;
    switch(choice)
        {
    case 1:
            system("CLS");
            cout << "::Question::\n\n"
                 << "are you a programmer ?\n\n";
            cin >> getinput;
            if(getinput=="yes")
            {
            system("CLS");
            cout << "You are a great person\n";
            system("PAUSE");
            }
            else
            {
                   system("CLS");
                   cout << "You are not a great person\n";
                   system("PAUSE");
            }
           break;
    case 2:          
                return 0;
                break;
        }
    
    }
return 0;
}

Link do komentarza
Udostępnij na innych stronach

Gość
Temat jest zablokowany i nie można w nim pisać.


  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...