Witam, chcę zrobić program z menu, który po wykonaniu zadanej czynności czyści ekran i wraca do menu.
Wymyśliłem coś takiego:
#include
#include
using namespace std;
void menu()
{
cout << "Menu"<< endl<
cout << "1: dodawanie"<
cout << "2: odejmowanie"<
cout << "3: mnożenie" << endl;
cout << "4: wyjscie" << endl;
}
int main()
{
int wybor;
menu();
cout<< endl;
cout << "Wybor: ";
cin>>wybor;
switch (wybor)
{
case 1:
int dodawanie,a,b;
cout << "Podaj pierwsza liczbe ";
cin >> a;
cout << "Podaj druga liczbe: ";
cin >> b;
dodawanie = a+b;
cout << "Wynik: " << dodawanie;
break;
case 2:
int odejmowanie,c,d;
cout << "Podaj pierwsza liczbe: ";
cin >> c;
cout << "Podaj druga liczbe: ";
cin >> d;
odejmowanie = a-b;
cout << "Wynik: " << odejmowanie;
break;
case 3:
int e,f,mnozenie;
cout << "Podaj pierwsza liczbe: ";
cin >>e;
cout << "Podaj druga liczbe: ";
cin >> f;
mnozenie = e*f;
cout << "Wynik: " << mnozenie;
break;
case 4:
return 0;
break;
}
char q,powrot;
cout << "q: powrot do menu ";
cin >> powrot;
if (powrot=q)
{
system ("CLS");
menu();
}
else
cout << "Wcisnieto nieprawidlowy klawisz";
return 0;
}
Problem w tym, że niestety program tak jakby ignornuje instrukcję if i po naciśnięciu q konsola wywala info, że program został pomyślnie zakończony i aby zamknąć konsolę należy wcisnąć dowolny klawisz. Ktoś ma pomysł jak to ugryźć? Nie wiem czemu, ale przy pierwszym case’ie program działał, dopisałem 3 pozostałe i się wysypał…
Twoja funkcja menu tylko wyświetla tekst. Albo powtarzasz wszystko while, albo pobierasz zmienną i wykonujesz to co chcesz w funkcji (wywołujesz w kółko).
#include
#include
using namespace std;
void menu()
{
cout << "Menu"<< endl<
cout << "1: dodawanie"<
cout << "2: odejmowanie"<
cout << "3: mnożenie" << endl;
cout << "4: wyjscie" << endl << endl;
}
int main()
{
int wybor;
while(1){
system("cls");
menu();
cout << "Wybor: ";
cin>>wybor;
switch (wybor)
{
case 1:
int dodawanie,a,b;
cout << "Podaj pierwsza liczbe ";
cin >> a;
cout << "Podaj druga liczbe: ";
cin >> b;
dodawanie = a+b;
cout << "Wynik: " << dodawanie;
break;
case 2:
int odejmowanie,c,d;
cout << "Podaj pierwsza liczbe: ";
cin >> c;
cout << "Podaj druga liczbe: ";
cin >> d;
odejmowanie = a-b;
cout << "Wynik: " << odejmowanie;
break;
case 3:
int e,f,mnozenie;
cout << "Podaj pierwsza liczbe: ";
cin >>e;
cout << "Podaj druga liczbe: ";
cin >> f;
mnozenie = e*f;
cout << "Wynik: " << mnozenie;
break;
case 4:
return 0;
break;
default: cout << "zly klawisz\n\n";
}}}
drobok , robiłem w ten sposób i efekt jest taki, że nie widać wyniku, ponieważ się kasuje, dlatego dałem if i zaprogramowałem na q powrot i czyszczenie.
Teraz działa. Bardzo Ci dziękuje. Mam prośbę, mógłbyś mi wyjaśnić co robi cin.sync() i cin.get()? Ten program jest do szkoły na pracę domową, tak więc wolę wiedzieć, na wypadek jakby nauczyciel chciał mnie sprawdzić czy ja pisałem program i zapytał o te dwie instrukcje.
To nie o to chodzi, jest ekstra, ale wiesz - chodzi o to, że nauczyciel zobaczy w kodzie coś, czego z nim nie przerabiałem i może zarzucić mi, że program nie zrobiłem sam, tylko zrobił go ktoś mądrzejszy ode mnie, ewentualnie jakiś doświadczony programista, a tak nie zarzuci mi tego.
system wprowadza ci to co w niej wpiszesz to środowiska,w twoim przypadku do konsoli (wszystkie polecenia z konsoli możesz sobie za pomocą te funkcji w programie). Tam możesz napisać praktycznie to co w samym c
A co do funkcji ponadprogramowych to sam coś o tym wiem. Na szczęście teraz już tak nie mam
No, niestety mam dość ciętego nauczyciela pod tym względem… W sumie to przypuszczam, że jemu to nawet chodziło o powrót bez czyszczenia ekranu, ale jako że bardzo podszedł mi ten język, postanowiłem podnieść sobie poprzeczkę i przy okazji nauczyć się czegoś. Swoją drogą było to dla mnie cenne doświadczenie, ponieważ po drodze zetknąłem się z problem z którym nie koniecznie bym sobie poradził i dowiedziałem się, jak sobie można poradzić. Szczerze mówiąc, to zacząłem się zastanawiać, czy w ogóle jest to wykonalne, ale w końcu doszedłem do wniosku, że musi być, bo w końcu jakby nie było w programowaniu praktycznie nie ma rzeczy niemożliwych i doszedłem do wniosku, że jest to kwestia drobnej modyfikacji kodu i zaskoczy…
Nie zniszczyłeś, ponieważ napisałem praktycznie. Doskonale sobie zdaję sprawę, że nie wszystko da się przedstawić komputerowi w sposób dla niego zrozumiały…