Qba474 Posted February 5, 2011 Report Share Posted February 5, 2011 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 Link to comment Share on other sites More sharing options...
[Ekspert] Hakken Posted February 5, 2011 Report Share Posted February 5, 2011 Wstaw swoj projekt menu, to ci powiem(y) co nie działa. Link to comment Share on other sites More sharing options...
yojc Posted February 5, 2011 Report Share Posted February 5, 2011 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 to comment Share on other sites More sharing options...
Qba474 Posted February 5, 2011 Author Report Share Posted February 5, 2011 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 to comment Share on other sites More sharing options...
[Ekspert] Hakken Posted February 5, 2011 Report Share Posted February 5, 2011 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 to comment Share on other sites More sharing options...
politan Posted February 5, 2011 Report Share Posted February 5, 2011 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 . Link to comment Share on other sites More sharing options...
[Ekspert] Hakken Posted February 5, 2011 Report Share Posted February 5, 2011 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 to comment Share on other sites More sharing options...
Qba474 Posted February 5, 2011 Author Report Share Posted February 5, 2011 Dzięki wszystkim! Działa Link to comment Share on other sites More sharing options...
Sevard Posted February 5, 2011 Report Share Posted February 5, 2011 Problem rozwiązany, więc temat zamykam.W razie potrzeby otwarcia tematu, proszę o kontakt przez PW. Link to comment Share on other sites More sharing options...