• 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

0 głosów
325 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 (155,120 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ź 307 wizyt
pytanie zadane 9 kwietnia 2022 w C i C++ przez AlfaWolfPL Nowicjusz (150 p.)
0 głosów
1 odpowiedź 673 wizyt
0 głosów
2 odpowiedzi 647 wizyt

93,775 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,379 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...