Powrót do menu

0

Cześć,
Na samym początku podkreślę, że dopiero uczę się C++, dlatego też rzeczy, które dla kogoś wydają się banalne, dla mnie mogą być trudne i niezrozumiałe.
Otóż napotkałem kilka problemów na swojej drodze. Muszę zrobić na studia pięć zadań, w jednym programie.
Oto problemy, które napotkałem:
1)
-Gdy wpisuję wartość poniżej 0 lub powyżej 5 w menu wyboru, to zamiast wykonać instrukcję poniżej:

if (zadanie<=0 || zadanie>5)
{
cout << "Nie ma takiego zadania"<<endl;

To po prostu wyświetla się "Wpisz R, aby wrócić do menu"
2) W pierwszym zadaniu po wykonaniu go, nie ma opcji, by wrócić do menu
3) system ("CLS") nie działa przy powrocie do menu, wygląda to tak:
screenshot-20221019123602.png

Poniżej wklejam cały kod (nie wiem jak wkleić ponumerowany kod, przepraszam)

#include <iostream>
 using namespace std;
 	void menu()
 	{
 		cout<<"MENU - Prosze wybrac zadanie"<<endl;
 		cout<<"----------------------------"<<endl;
 		cout<<"Zadanie 1"<<endl;
 		cout<<"Zadanie 2"<<endl;
 		cout<<"Zadanie 3"<<endl;
 		cout<<"Zadanie 4"<<endl;
 		cout<<"Zadanie 5"<<endl<<endl;
 	}
 int main()
 {
 	int zadanie;
 	menu();
 		cin>>zadanie;
 	system("cls");
 	if (zadanie<=0 || zadanie>5)
 	{
 	cout << "Nie ma takiego zadania"<<endl;
 	}
 	else
 	{
 		switch (zadanie) 
 		{
  		case 1:
     		int liczba;
 			cout <<"Podaj liczbe z zakresu 0-999" <<endl;
 			cin>>liczba;
 			if(liczba<0 || liczba>999)
 			{
 				cout<<"Podana liczba nie spelnia wymagan"<<endl;
 			}
 			else
 			{
 				if(liczba>=100)
 			{
             		liczba= liczba - (liczba-(liczba%1000));
         			cout<<"Liczba setek: "<< (liczba-(liczba%100))/100<<endl;
         	}
         		if(liczba>=10)
 			{
             		liczba= liczba- (liczba-(liczba%100));
             		cout<<"Liczba dziesiatek: "<< (liczba-(liczba%10))/10<<endl;
         	}
         		if(liczba>=0)
 			{
             		liczba = liczba - (liczba-(liczba%10));
             		cout<<"Liczba jednostek: "<< liczba<<endl;
         	}
 			}
 			return 0;
     		break;
     	
     	
   		case 2:
   			cout << "---------";
     		break;	
     		
     		
   		case 3:
     		int r,P,O;
     		cout<<"Podaj promien"<<endl;;
     		cin>>r;
     		P=(r*r)*3,14;
     		O=2*r*3,14;
     		if(r<=0)
     		{
     			cout<<"Promien nie moze byc rowny 0, ani ujemny."<<endl;
 			}
 			else
 			{
     			cout<<"Pole kola wynosi "<<P;
 				cout<<", a obwod kola "<<O<<endl;
 			}
     		break;
   		case 4:
   			
   			
    	 		char litera;
    	 		cout<<"Wprowadz dane do sprawdzenia"<<endl;
    	 		cin>>litera;
    	 		if(litera== 'a' || litera== 'e' ||litera== 'y'||litera== 'o'||litera== 'i'||litera== 'u' )
    	 		{
    	 			cout<<"Ta litera jest samogloska"<<endl;
 			}
 			else if(litera== 'b'||litera== 'c'||litera== 'd'||litera== 'f'||litera== 'g'||litera== 'h'||litera== 'j'||litera== 'k'||litera== 'l'||litera== 'm'||litera== 'n'||litera== 'p'||litera=='r'||litera== 's'||litera== 't'||litera== 'w'||litera== 'z')
 			{
 				cout<<"Ta litera to spolgloska"<<endl;
 			}
 			else
 			{
 				cout<<"Wprowadzone dane to inny znak"<<endl;
 			}
     		break;
   		case 5:
   			
   			
     		int v,vp,l;
 			
     		cout<<"Podaj kwote:"<<endl;
     		cin>>l;
     		cout<<"Podaj stawke VAT"<<endl;
     		cin>>v;
     		vp=(l*v)/100;
     		if(l<0 || v<0)
 			{
 				cout<<"Podales zla wartosc"<<endl;
 			}
 			else
 			{
     			cout<<"Wartosc podatku VAT wynosi "<<vp<<endl;
     		}
     		break;
 }
 system("PAUSE");
 }
 			system ("CLS");
 			char powrot;
 			cout << "Wpisz R, aby powrocic do menu"<<endl<<endl;
 			cin >> powrot;
 			if((powrot=='r')||(powrot=='R'))
 			{
 					main();
 			}
 			else
 				cout << "Dowidzenia!";
 	}
2

Ad 1) Kiedy wpisałeś liczbę to po jej wpisaniu wcisnąłeś enter właśnie ów enter się wczytał do zmiennej powrot, użyj cin>>ws>>powrot; z nagłówka <iomanip>
Ad 2) jak wyżej
Ad 3) Działa, czyści ... jak wyżej ... wypisuje menu ponownie.

0
_13th_Dragon napisał(a):

Ad 1) Kiedy wpisałeś liczbę to po jej wpisaniu wcisnąłeś enter właśnie ów enter się wczytał do zmiennej powrot, użyj cin>>ws>>powrot; z nagłówka <iomanip>
Ad 2) jak wyżej
Ad 3) Działa, czyści ... jak wyżej ... wypisuje menu ponownie.

Wielkie dzięki za pomoc i rady, ale niestety nie rozwiązałem swojego 1 problemu. Chodzi mi o to, że przykładowo jak wpiszę zadanie nr : 6 to zamiast wyskoczyć, że nie ma takiego zadania to wyświetla się "Wpisz R, aby powrócić do MENU"

2
vinteris1 napisał(a):

Chodzi mi o to, że przykładowo jak wpiszę zadanie nr : 6 to zamiast wyskoczyć, że nie ma takiego zadania to wyświetla się "Wpisz R, aby powrócić do MENU"

Ależ się wyświetla, tylko że tuż po tym następuje system ("CLS"); i nawet nie nadążasz zauważyć.
Ta komenda jest totalnie utrudniająca, nie pozwala użytkownikowi popatrzeć co zrobił przed tym.
Czyli totalnie psuje koncepcję konsoli.

0
_13th_Dragon napisał(a):
vinteris1 napisał(a):

Chodzi mi o to, że przykładowo jak wpiszę zadanie nr : 6 to zamiast wyskoczyć, że nie ma takiego zadania to wyświetla się "Wpisz R, aby powrócić do MENU"

Ależ się wyświetla, tylko że tuż po tym następuje system ("CLS"); i nawet nie nadążasz zauważyć.

Wszystko jasne, dzięki za pomoc. Jest coś lepszego, niż system("CLS"); ? Zależy mi na tym, żeby czyściło konsolę.

2
vinteris1 napisał(a):

Zależy mi na tym, żeby czyściło konsolę.

Właśnie to czyszczenie konsoli psuje koncepcję konsoli.
Jesteś jeszcze nie na tym etapie aby skutecznie sobie poradzić z takim czyszczeniem.

0
_13th_Dragon napisał(a):
vinteris1 napisał(a):

Zależy mi na tym, żeby czyściło konsolę.

Właśnie to czyszczenie konsoli psuje koncepcję konsoli.
Jesteś jeszcze nie na tym etapie aby skutecznie sobie poradzić z takim czyszczeniem.

Okej, wielkie dzięki za pomoc.

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