• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

dublowanie case'ów w różnych switch'ach

Object Storage Arubacloud
0 głosów
146 wizyt
pytanie zadane 21 kwietnia 2020 w C i C++ przez Łosiasty Nowicjusz (190 p.)
edycja 21 kwietnia 2020 przez Łosiasty
#include<iostream>
#include<cstdlib>
#include<time.h>
#include<conio.h>
#include<unistd.h>
#include<string>
#include<windows.h>
using namespace std;
enum Position{ LEFT, CENTRE, RIGHT };  

void print( Position pos, string s, int linelength )
{
   int spaces = 0;
   switch( pos )
   {
      case CENTRE: spaces = ( linelength - s.size() ) / 2; break;
      case RIGHT : spaces =   linelength - s.size()      ; break;
   }
   if ( spaces > 0 ) cout << string( spaces, ' ' );
   cout << s << '\n';
}

int main()
{
	const int LINELENGTH = 40;
    string header( LINELENGTH, '=' );
	int lekcja,temat,format;
	cout<<"wcisnij dowolny klawisz aby kontynuowac"<<endl<<endl;
	getch();
	for(;;)
	{
		bool contlekcja=true;
		system( "cls" );
		cout<<"==============================="<<endl;
		cout<<"MENU GLOWNE"<<endl;
		cout<<"==============================="<<endl;
		cout<<"1. Lekcja 1: Petla WHILE"<<endl;
		cout<<"2. Lekcja 2: Tablice"<<endl;
		cout<<"3. Lekcja 3: Tablice losowe"<<endl;
		cout<<"4. Wyjscie"<<endl<<endl;
		print( CENTRE, "wybierz numer opcji", LINELENGTH );
		cin>>lekcja;
		switch(lekcja)
		{
			case 1:
			{
				while(contlekcja)
				{
					bool conttemat=true;
					system( "cls" );
					cout<<"==============================="<<endl;
					cout<<"Lekcja 1: Petla WHILE"<<endl;
					cout<<"==============================="<<endl;
					cout<<"1. 001-petla while"<<endl;
					cout<<"2. 002-petla while"<<endl;
					cout<<"3. 003-petla while"<<endl;
					cout<<"4. 004-petla while"<<endl;
					cout<<"5. Powrot do menu glownego."<<endl<<endl;
					print( CENTRE, "wybierz numer opcji", LINELENGTH );
					cin>>temat;
					switch(temat)
					{
						case 1:
						{
							while(conttemat)
							{
								system("cls");
								cout<<"001-petla while"<<endl;
								cout<<"--------------------------------------------------------------------------------"<<endl;
								cout<<"Napisz program wczytujacy z klawiatury liczbe calkowita."<<endl;
								cout<<"Program powinien przyjmowac jedynie liczbe dodatnia."<<endl;
								cout<<"Jesli uzytkownik poda liczbe ujemna, wyswietla sie komunikat o nieprawidlowej   liczbie i poproszony jest o kolejna liczbe."<<endl;
								cout<<"Probe wczytywania liczby powtarzamy dopoty, dopoki uzytkownik nie poda liczby   poprawnej (dodatniej)."<<endl;
								cout<<"Po zakonczeniu petli pojawia sie komunikat \"liczba prawidlowa = \"\""<<endl;
								cout<<"--------------------------------------------------------------------------------"<<endl;
								cout<<"1. format.txt"<<endl;
								cout<<"2. format.exe"<<endl;
								cout<<"3. Powrot do wyboru tematu."<<endl<<endl;
								print( CENTRE, "wybierz numer opcji", LINELENGTH );
								cin>>format;
								switch(format)
								{
									case 1:
									{
										system("cls");
										cout<<"--------------------------------------------------------------------------------"<<endl;
										cout<<"#include<iostream>"<<endl;
										cout<<"using namespace std;"<<endl;
										cout<<"int main();"<<endl;
										cout<<"{"<<endl;
										cout<<"	int a;"<<endl;
										cout<<"	cout<<\"podaj liczbe\"<<endl;"<<endl;
										cout<<"	cin>>a;"<<endl;
										cout<<"	while(a<=0)"<<endl;
										cout<<"	{"<<endl;
										cout<<"		cout<<\"nieprawidlowa liczba\""<<endl;
										cout<<"		cout<<\"podaj liczbe\""<<endl;
										cout<<"		cin>>a;"<<endl;
										cout<<"	}"<<endl;
										cout<<"	cout<<\"prawidlowa liczba=\"<<a;"<<endl;
										cout<<"	return 0;"<<endl;
										cout<<"}"<<endl;
										cout<<"--------------------------------------------------------------------------------"<<endl;
										print( CENTRE, "Nacisnij dowolny klawisz aby kontynuowac.", LINELENGTH );
										getch();
										break;
									}
									case 2:
									{										
										int a;
										system("cls");
										cout<<"podaj liczbe";
										cin>>a;
										while(a<=0)
										{
											cout<<"nieprawidlowa liczba"<<endl;
											sleep(2);
											system("cls");
											cout<<"podaj liczbe";
											cin>>a;
										}
										system("cls");
										cout<<"prawidlowa liczba="<<a;
										getch();
										break;
									}
									case 3:
									{
										conttemat=false;
										break;
									}
									default:
									{
										system( "cls" );
										cout<<"Nie ma takiej opcji w menu!"<<endl<<endl;
										cout<<"Nacisnij dowolny klawisz aby kontynuowac."<<endl<<endl;
										getch();
									}
								}
							}
						}
						case 2:
						{
							while(conttemat)
							{
								system("cls");
								cout<<"002-petla while"<<endl;
								cout<<"--------------------------------------------------------------------------------"<<endl;
								cout<<"Wykorzystujac petle WHILE napisz program, wyznaczajacy pole kwadratu."<<endl;
								cout<<"Program jako dane (dlugosc boku) powinien przyjmowac wylacznie liczby dodatnie."<<endl;
								cout<<"W przypadku podania liczby ujemnej pojawia sie komunikat o blednych danych i    ponowna mozliwosc wczytania liczby."<<endl;
								cout<<"--------------------------------------------------------------------------------"<<endl;
								cout<<"1. format.txt"<<endl;
								cout<<"2. format.exe"<<endl;
								cout<<"3. Powrot do wyboru tematu."<<endl<<endl;
								print( CENTRE, "wybierz numer opcji", LINELENGTH );
								cin>>format;           
       	                        switch(format);   
								{
									case 1:
									{
										system("cls");
										cout<<"--------------------------------------------------------------------------------"<<endl;
										cout<<"#include<iostream>"<<endl;
										cout<<"using namespace std;"<<endl;
										cout<<"int main()"<<endl;
										cout<<"{"<<endl;
										cout<<"	int a,p;"<<endl;
										cout<<"	cout<<\"podaj dlugosc boku kwadratu \";"<<endl;
										cout<<"	cin>>a;"<<endl;
										cout<<"	while(a<=0)"<<endl;
										cout<<"	{"<<endl;
										cout<<"		cout<<\"bledne dane\"<<endl;"<<endl;
										cout<<"		cout<<\"podaj dlugosc boku kwadratu \";"<<endl;
										cout<<"		cin>>a;"<<endl;
										cout<<"	} "<<endl;
										cout<<"	p=a*a;"<<endl;
										cout<<"	cout<<\"pole kwadratu wynosi=\"<<p;"<<endl;
										cout<<"	return 0;"<<endl;
										cout<<"}"<<endl;
										cout<<"--------------------------------------------------------------------------------"<<endl;
										print( CENTRE, "Nacisnij dowolny klawisz aby kontynuowac.", LINELENGTH );
										getch();															
										break;
									}
									case 2:
									{
										int a,p;
										cout<<"podaj dlugosc boku kwadratu ";
										cin>>a;
										while(a<=0)
										{
											cout<<"bledne dane"<<endl;
											cout<<"podaj dlugosc boku kwadratu ";
											cin>>a;
										} 
									p=a*a;
									cout<<"pole kwadratu wynosi="<<p;
									getch();
									break;
									}
									case 3:
									{
										conttemat=false;
										break;
									}
									default:
									{
										system( "cls" );
										cout<<"Nie ma takiej opcji w menu!"<<endl<<endl;
										cout<<"Nacisnij dowolny klawisz aby kontynuowac."<<endl<<endl;
										getch();
									}
								}
							}
						}
						case 3:
						{
							cout<<"git"<<endl;
							system("cls");
							break;
						}
						case 4:
						{
							cout<<"git"<<endl;
							system("cls");
							break;
						}
						case 5:
						{
							contlekcja=false;
							break;
						}
						default1:
						{
							system( "cls" );
							cout<<"Nie ma takiej opcji w menu!"<<endl<<endl;
							cout<<"Nacisnij dowolny klawisz aby kontynuowac."<<endl<<endl;
							getch();
							break;
						}
					}
				}
			}
			case 2:
			{
				system( "cls" );
				cout<<"git"<<endl;
				break;
			}
			case 3:
			{
				system( "cls" );
				cout<<"git"<<endl;
				break;
			}
			case 4:
			{
				system( "cls" );
				cout<<"Za chwile nastapi zamkniecie programu.";
				exit(0);
			}
			default:
			{
				system( "cls" );
				cout<<"Nie ma takiej opcji w menu!"<<endl<<endl;
				cout<<"Nacisnij dowolny klawisz aby kontynuowac."<<endl<<endl;
				getch();
				system( "cls" );
			}
		}
	}	
return 0;
}

problem jest z tym switch'em  "cout<<"2. 002-petla while"<<endl;"

błędy dublowania typu-[Error] duplicate case value

 

komentarz 3 czerwca 2020 przez Łosiasty Nowicjusz (190 p.)
#include<iostream>
#include<cstdlib>
#include<time.h>
#include<conio.h>
#include<unistd.h>
#include<string>
#include<windows.h>
#include<stdio.h>
using namespace std;
enum Position{ LEFT, CENTRE, RIGHT };  
void print( Position pos, string s, int linelength )
{
   int spaces = 0;
   switch( pos )
   {
      case CENTRE: spaces = ( linelength - s.size() ) / 2; break;
      case RIGHT : spaces =   linelength - s.size()      ; break;
   }
   if ( spaces > 0 ) cout << string( spaces, ' ' );
   cout << s << '\n';
}
void menu_glowne();
void blad();
void koniec_programu();
void lekcja1();
void temat1();
void format1();
void temat2();
void format2();

int main()
{
	const int LINELENGTH = 40;
    string header( LINELENGTH, '=' );
	char lekcja,temat,format;
	cout<<"wcisnij dowolny klawisz aby kontynuowac"<<endl<<endl;
	getch();
	for(;;)
	{
		bool contlekcja=true;
		menu_glowne();
		print( CENTRE, "wybierz numer opcji", LINELENGTH );
		lekcja=getch();
		switch(lekcja)
		{
			case '1':
			{
				while(contlekcja)
				{
					bool conttemat=true;
					lekcja1();
					print( CENTRE, "wybierz numer opcji", LINELENGTH );
					temat=getch();
					switch(temat)
					{
						case '1':
						{
							while(conttemat)
							{
								temat1();
								print( CENTRE, "wybierz numer opcji", LINELENGTH );
								format=getch();
								switch(format)
								{
									case '1':
									{
										format1();
										print( CENTRE, "Nacisnij dowolny klawisz aby kontynuowac.", LINELENGTH );
										getch();
										break;
									}
									case '2':
									{										
										int a;
										system( "cls" );
										cout<<"podaj liczbe"<<endl;
										cin>>a;
										while(a<=0)
										{
											cout<<"nieprawidlowa liczba"<<endl;
											cout<<"podaj liczbe";
											cin>>a;
											if(a>0)
											{
												break;
											}
										}
										cout<<"prawidlowa liczba="<<a;
										getch();
										break;
									}
									case '3':
									{
										conttemat=false;
										break;
									}
									default:
									{
										blad();
									}
								}
							}
						}
						case '2':
						{
							while(conttemat)
							{
								lekcja2();
								print( CENTRE, "wybierz numer opcji", LINELENGTH );
								format=getch();
								switch(format);
								{
									case '1':
									{
										temat2();
										print( CENTRE, "Nacisnij dowolny klawisz aby kontynuowac.", LINELENGTH );
										getch();															
										break;
									}
									case '2':
									{
										int a,p;
										cout<<"podaj dlugosc boku kwadratu ";
										cin>>a;
										while(a<=0)
										{
											cout<<"bledne dane"<<endl;
											cout<<"podaj dlugosc boku kwadratu ";
											cin>>a;
										} 
									p=a*a;
									cout<<"pole kwadratu wynosi="<<p;
									getch();
									break;
									}
									case '3':
									{
										conttemat=false;
										break;
									}
									default:
									{
									 blad();
									}
								}
							}
						}
						case '3':
						{
							cout<<"git"<<endl;
							system("cls");
							break;
						}
						case '4':
						{
							cout<<"git"<<endl;
							system("cls");
							break;
						}
						case '5':
						{
							contlekcja=false;
							break;
						}
						default:
						{
							blad();
						}
					}
				}
			}
			case '2':
			{
				system( "cls" );
				cout<<"git"<<endl;
				break;
			}
			case '3':
			{
				system( "cls" );
				cout<<"git"<<endl;
				break;
			}
			case '4':
			{
				koniec_programu();
			}
			default:
			{
				blad();
			}
		}
	}	
return 0;
}
void menu_glowne()
{
	system( "cls" );
	cout<<"==============================="<<endl;
	cout<<"MENU GLOWNE"<<endl;
	cout<<"==============================="<<endl;
	cout<<"1. Lekcja 1: Petla WHILE"<<endl;
	cout<<"2. Lekcja 2: Tablice"<<endl;
	cout<<"3. Lekcja 3: Tablice losowe"<<endl;
	cout<<"4. Wyjscie"<<endl<<endl;
}
void blad()
{
	system( "cls" );
	cout<<"Nie ma takiej opcji w menu!"<<endl<<endl;
	cout<<"Nacisnij dowolny klawisz aby kontynuowac."<<endl<<endl;
	getch();
}
void koniec_programu()
{
	system( "cls" );
	cout<<"Za chwile nastapi zamkniecie programu.";
	exit(0);
}
void lekcja()
{
	system( "cls" );
	cout<<"==============================="<<endl;
	cout<<"Lekcja 1: Petla WHILE"<<endl;
	cout<<"==============================="<<endl;
	cout<<"1. 001-petla while"<<endl;
	cout<<"2. 002-petla while"<<endl;
	cout<<"3. 003-petla while"<<endl;
	cout<<"4. 004-petla while"<<endl;
	cout<<"5. Powrot do menu glownego."<<endl<<endl;
}
void temat1()
{
	system("cls");
	cout<<"001-petla while"<<endl;
	cout<<"--------------------------------------------------------------------------------"<<endl;
	cout<<"Napisz program wczytujacy z klawiatury liczbe calkowita."<<endl;
	cout<<"Program powinien przyjmowac jedynie liczbe dodatnia."<<endl;
	cout<<"Jesli uzytkownik poda liczbe ujemna, wyswietla sie komunikat o nieprawidlowej   liczbie i poproszony jest o kolejna liczbe."<<endl;
	cout<<"Probe wczytywania liczby powtarzamy dopoty, dopoki uzytkownik nie poda liczby   poprawnej (dodatniej)."<<endl;
	cout<<"Po zakonczeniu petli pojawia sie komunikat \"liczba prawidlowa = \"\""<<endl;
	cout<<"--------------------------------------------------------------------------------"<<endl;
	cout<<"1. format.txt"<<endl;
	cout<<"2. format.exe"<<endl;
	cout<<"3. Powrot do wyboru tematu."<<endl<<endl;
}
void format1()
{
	system("cls");
	cout<<"--------------------------------------------------------------------------------"<<endl;
	cout<<"#include<iostream>"<<endl;
	cout<<"using namespace std;"<<endl;
	cout<<"int main();"<<endl;
	cout<<"{"<<endl;
	cout<<"	int a;"<<endl;
	cout<<"	cout<<\"podaj liczbe\"<<endl;"<<endl;
	cout<<"	cin>>a;"<<endl;
	cout<<"	while(a<=0)"<<endl;
	cout<<"	{"<<endl;
	cout<<"		cout<<\"nieprawidlowa liczba\"<<endl;"<<endl;
	cout<<"		cout<<\"podaj liczbe\""<<endl;
	cout<<"		cin>>a;"<<endl;
	cout<<"		if(a>0)"<<endl;
	cout<<"		{"<<endl;
	cout<<"			break;"<<endl;
	cout<<"		}"<<endl;
	cout<<"	}"<<endl;
	cout<<"	cout<<\"prawidlowa liczba=\"<<a;"<<endl;
	cout<<"	return 0;"<<endl;
	cout<<"}"<<endl;
	cout<<"--------------------------------------------------------------------------------"<<endl;
}
void temat2()
{
	system("cls");
	cout<<"002-petla while"<<endl;
	cout<<"--------------------------------------------------------------------------------"<<endl;
	cout<<"Wykorzystujac petle WHILE napisz program, wyznaczajacy pole kwadratu."<<endl;
	cout<<"Program jako dane (dlugosc boku) powinien przyjmowac wylacznie liczby dodatnie."<<endl;
	cout<<"W przypadku podania liczby ujemnej pojawia sie komunikat o blednych danych i    ponowna mozliwosc wczytania liczby."<<endl;
	cout<<"--------------------------------------------------------------------------------"<<endl;
	cout<<"1. format.txt"<<endl;
	cout<<"2. format.exe"<<endl;
	cout<<"3. Powrot do wyboru tematu."<<endl<<endl;
}
void format2()
{
	system("cls");
	cout<<"--------------------------------------------------------------------------------"<<endl;
	cout<<"#include<iostream>"<<endl;
	cout<<"using namespace std;"<<endl;
	cout<<"int main()"<<endl;
	cout<<"{"<<endl;
	cout<<"	int a,p;"<<endl;
	cout<<"	cout<<\"podaj dlugosc boku kwadratu \";"<<endl;
	cout<<"	cin>>a;"<<endl;
	cout<<"	while(a<=0)"<<endl;
	cout<<"	{"<<endl;
	cout<<"		cout<<\"bledne dane\"<<endl;"<<endl;
	cout<<"		cout<<\"podaj dlugosc boku kwadratu \";"<<endl;
	cout<<"		cin>>a;"<<endl;
	cout<<"	} "<<endl;
	cout<<"	p=a*a;"<<endl;
	cout<<"	cout<<\"pole kwadratu wynosi=\"<<p;"<<endl;
	cout<<"	return 0;"<<endl;
	cout<<"}"<<endl;
	cout<<"--------------------------------------------------------------------------------"<<endl;
}

 

Są i funkcje

sory że tak długo ale musiałem nadrobić zaległości w innych lekcjach .

1 odpowiedź

+1 głos
odpowiedź 21 kwietnia 2020 przez tangarr Mędrzec (154,860 p.)
Czy wygodnie pisze ci się kod zawierający tyle zagnieżdżeń?
Podziel go na mniejsze funkcje.
komentarz 22 kwietnia 2020 przez Łosiasty Nowicjusz (190 p.)
Właśnie zaczynam 9 odc z kursu c++ xD
odezwę się za jakiś czas jak to zrobię
komentarz 3 czerwca 2020 przez Łosiasty Nowicjusz (190 p.)

@tangarr, gotowe

Podobne pytania

0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 9 kwietnia 2022 w C i C++ przez AlfaWolfPL Nowicjusz (120 p.)
0 głosów
1 odpowiedź 324 wizyt
0 głosów
2 odpowiedzi 217 wizyt

92,568 zapytań

141,420 odpowiedzi

319,624 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...