我在c ++中使用了一堆开关,但它们不能一起工作。像在第一个菜单中一样,仅开关'W'启动,但是开关'M'总是关闭窗口。为什么?我找不到答案。该代码长而波兰语,不关心字符。
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <limits>
#include<string.h>
#include <string>
using namespace std;
std::string PL( const char * text )
{
std::string result;
for(; * text; text++ )
switch( * text )
{
case 'ケ': result += static_cast < char >( 0xa5 ); break;
case '・: result += static_cast < char >( 0x86 ); break;
case '・: result += static_cast < char >( 0xa9 ); break;
case 'ウ': result += static_cast < char >( 0x88 ); break;
case '・: result += static_cast < char >( 0xe4 ); break;
case '・: result += static_cast < char >( 0xa2 ); break;
case '・: result += static_cast < char >( 0x98 ); break;
case 'ソ': result += static_cast < char >( 0xbe ); break;
case '・: result += static_cast < char >( 0xab ); break;
case '・': result += static_cast < char >( 0xa4 ); break;
case 'ニ': result += static_cast < char >( 0x8f ); break;
case 'ハ': result += static_cast < char >( 0xa8 ); break;
case '」': result += static_cast < char >( 0x9d ); break;
case 'ム': result += static_cast < char >( 0xe3 ); break;
case 'モ': result += static_cast < char >( 0xe0 ); break;
case '・: result += static_cast < char >( 0x97 ); break;
case 'ッ': result += static_cast < char >( 0xbd ); break;
case '・: result += static_cast < char >( 0x8d ); break;
default: result += * text; break;
}
return result;
}
int main()
{
long double x,y;
using namespace std;
char glowne,wej,wyj;
cout << PL("Witaj drogi uソytkowniku!")<<endl;
cout << PL("Wybierz rodzaj jednostek wagi(W) czy miary(M)")<<endl;
cin >> glowne;
switch(glowne) {
case 'W':{
cout << PL("Uwaga! mg=m g=g dag=d kg=k q=q t=t") << endl;
cout << PL("Podaj jednostk・wej彡iowケ: ");
cin >> wej;
cout << PL("Podaj jednostk・wyj彡iowケ: ");
cin >> wyj;
cout << PL("Podaj liczb・");
cin >> x;
switch(wej) {
case 'm': {
switch(wyj){
case 'm': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"mg";
getch();
exit(0);
break;
}
case 'g': {
cout.precision(4);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 4miej. po przecinku): ")<<fixed<<x/1000<<"g";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"g";
exit(0);
break;
}
case 'd': {
cout.precision(5);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 5miej. po przecinku) : ")<<fixed<<x/10000<<"dag";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi : ")<<x/10000<<"dag";
getch();
exit(0);
break;
}
case 'k': {
cout.precision(7);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 7miej. po przecinku) : ")<<fixed<<x/1000000<<"kg";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000000<<"kg";
getch();
exit(0);
break;
}
case 'q': {
cout.precision(9);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 9miej. po przecinku): ")<<fixed<<x/100000000<<"q";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100000000<<"q";
getch();
exit(0);
break;
}
case 't': {
cout.precision(10);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 10miej. po przecinku): ")<<fixed<<x/1000000000<<"t";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000000000<<"kg";
getch();
exit(0);
break;
}
default: {
cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
getch();
exit(0);
break;
}
}
break;
}
case 'g': {
switch(wyj){
case 'm': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000<<"mg";
getch();
exit(0);
break;
}
case 'g': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x<<"g";
getch();
exit(0);
break;
}
case 'd': {
cout.precision(3);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 3miej. po przecinku) : ")<<fixed<<x/10<<"dag";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi : ")<<x/10<<"dag";
getch();
exit(0);
break;
}
case 'k': {
cout.precision(4);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 4miej. po przecinku) : ")<<fixed<<x/1000<<"kg";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"kg";
getch();
exit(0);
break;
}
case 'q': {
cout.precision(6);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 6miej. po przecinku): ")<<fixed<<x/100000<<"q";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100000<<"kg";
getch();
exit(0);
break;
}
case 't': {
cout.precision(7);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 7miej. po przecinku): ")<<fixed<<x/1000000<<"t";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000000<<"kg";
getch();
exit(0);
break;
}
default: {
cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
getch();
exit(0);
break;
}
break;
}
case 'd': {
switch(wyj){
case 'm': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10000<<"mg";
getch();
exit(0);
break;
}
case 'g': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10<<"g";
getch();
exit(0);
break;
}
case 'd': {
cout <<endl<< PL("Twoja liczba po przeliczeniu: ")<<x<<"dag";
getch();
exit(0);
break;
}
case 'k': {
cout.precision(3);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 3miej. po przecinku) : ")<<fixed<<x/100<<"kg";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100<<"kg";
getch();
exit(0);
break;
}
case 'q': {
cout.precision(5);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 5miej. po przecinku): ")<<fixed<<x/10000<<"q";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/10000<<"q";
getch();
exit(0);
break;
}
case 't': {
cout.precision(6);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 6miej. po przecinku): ")<<fixed<<x/100000<<"t";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100000<<"t";
getch();
exit(0);
break;
}
default: {
cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
getch();
exit(0);
break;
}
break;
}
case 'k': {
switch(wyj){
case 'm': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000000<<"mg";
getch();
exit(0);
break;
}
case 'g': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*1000<<"g";
getch();
exit(0);
break;
}
case 'd': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*100<<"dag";
getch();
exit(0);
break;
}
case 'k': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x<<"dag";
getch();
exit(0);
break;
}
case 'q': {
cout.precision(4);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 4miej. po przecinku): ")<<fixed<<x/100<<"q";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100<<"q";
getch();
exit(0);
break;
}
case 't': {
cout.precision(5);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 5miej. po przecinku): ")<<fixed<<x/1000<<"t";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"t";
getch();
exit(0);
break;
}
default: {
cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
getch();
exit(0);
break;
}
break;
}
break;
}
case 'q': {
switch(wyj){
case 'm': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*100000000<<"mg";
getch();
exit(0);
break;
}
case 'g': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*100000<<"g";
getch();
exit(0);
break;
}
case 'd': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*10000<<"dag";
getch();
exit(0);
break;
}
case 'k': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*100<<"kg";
getch();
exit(0);
break;
}
case 'q': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x<<"q";
getch();
exit(0);
break;
}
case 't': {
cout.precision(5);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 5miej. po przecinku): ")<<fixed<<x/1000<<"t";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"kg";
getch();
exit(0);
break;
}
default: {
cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
getch();
exit(0);
break;
}
break;
}
case 't': {
switch(wyj){
case 'm': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000000000<<"mg";
getch();
exit(0);
break;
}
case 'g': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*1000000<<"g";
getch();
exit(0);
break;
}
case 'd': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*100000<<"dag";
getch();
exit(0);
break;
}
case 'k': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*1000<<"kg";
getch();
exit(0);
break;
}
case 'q': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*10<<"q";
getch();
exit(0);
break;
}
case 't': {
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x<<"q";
getch();
exit(0);
break;
}
default: {
cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
getch();
exit(0);
break;
}
case 'M':{
cout << PL("Uwaga! mm=n, cm=c, dm=d, m=m, km=k");
cout << PL("Podaj jednostk・wej彡iowケ: ");
cin >> wej;
cout << PL("Podaj jednostk・wyj彡iowケ: ");
cin >> wyj;
cout << PL("Podaj liczb・");
cin >> x;
switch(wej) {
case 'n': {
switch(wyj){
case 'n': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"mm";
getch();
exit(0);
break;
}
case 'c': {
cout.precision(2);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 2miej. po przecinku): ")<<fixed<<x/10<<"cm";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/10<<"cm";
getch();
exit(0);
break;
}
case 'd': {
cout.precision(3);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 3miej. po przecinku) : ")<<fixed<<x/100<<"dm";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi : ")<<x/100<<"dm";
getch();
exit(0);
break;
}
case 'm': {
cout.precision(4);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 4miej. po przecinku) : ")<<fixed<<x/1000<<"m";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"m";
getch();
exit(0);
break;
}
case 'k': {
cout.precision(9);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 9miej. po przecinku): ")<<fixed<<x/1000000<<"km";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000000<<"km";
getch();
exit(0);
break;
}
default: {
cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
getch();
exit(0);
break;
}
}
break;
}
case 'c': {
switch(wyj){
case 'n': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10<<"mm";
getch();
exit(0);
break;
}
case 'c': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"cm";
getch();
exit(0);
break;
}
case 'd': {
cout.precision(2);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 2miej. po przecinku) : ")<<fixed<<x/10<<"dm";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi : ")<<x/10<<"dm";
getch();
exit(0);
break;
}
case 'm': {
cout.precision(3);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 3miej. po przecinku) : ")<<fixed<<x/100<<"m";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100<<"m";
getch();
exit(0);
break;
}
case 'k': {
cout.precision(6);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 6miej. po przecinku): ")<<fixed<<x/100000<<"km";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100000<<"km";
getch();
exit(0);
break;
}
default: {
cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
getch();
exit(0);
break;
}
}
}
case 'd': {
switch(wyj){
case 'n': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*100<<"mm";
getch();
exit(0);
break;
}
case 'c': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10<<"cm";
getch();
exit(0);
break;
}
case 'd': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"dm";
getch();
exit(0);
break;
}
case 'm': {
cout.precision(2);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 2miej. po przecinku) : ")<<fixed<<x/10<<"m";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/10<<"m";
getch();
exit(0);
break;
}
case 'k': {
cout.precision(6);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 6miej. po przecinku): ")<<fixed<<x/10000<<"km";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/10000<<"km";
getch();
exit(0);
break;
}
default: {
cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
getch();
exit(0);
break;
}
break;
}
case 'm': {
switch(wyj){
case 'n': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000<<"mm";
getch();
exit(0);
break;
}
case 'c': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*100<<"cm";
getch();
exit(0);
break;
}
case 'd': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10<<"dm";
getch();
exit(0);
break;
}
case 'm': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"m";
getch();
exit(0);
break;
}
case 'k': {
cout.precision(4);
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 4miej. po przecinku): ")<<fixed<<x/1000<<"km";
cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"km";
getch();
exit(0);
break;
}
default: {
cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
getch();
exit(0);
break;
}
break;
}
case 'k': {
switch(wyj){
case 'n': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000000<<"mm";
getch();
exit(0);
break;
}
case 'c': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*100000<<"cm";
getch();
exit(0);
break;
}
case 'd': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10000<<"dm";
getch();
exit(0);
break;
}
case 'm': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000<<"m";
getch();
exit(0);
break;
}
case 'k': {
cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"km";
getch();
exit(0);
break;
}
default: {
cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
getch();
exit(0);
break;
}
break;
}
break;
}
default:{
cout << PL ("Nie prawidウowy argument! Spruj ponownie!");
break;
}
}
break;
}
return 0;
}
}
}
}
}
}
}
}
}
}
}
[exit(0)
功能完成您的项目。
[getch()
]为您暂停项目并等待控制台中的输入,一旦按下按钮,该功能将继续项目,然后由于exit(0)
而结束您的项目>
并且请不要使用这样的开关,代码非常凌乱且不便于阅读。