Witam napisałem konwenter miar i chciałbym, żeby po błędzie restartował się, ale nie bardzo sobie z tym radzę, może mógłby mi ktoś coś podpowiedzieć?
#include <iostream>
#include <conio.h>
#include <string>
#include <cstdlib>
using namespace std;
float conventer(float a, string qp);
void menuengine(char a);
string menuengine2(char a);
void menu();
void error();
int main()
{
char x;
cout<<" ______________________________________________"<<endl;
cout<<"|***Meters, inches, jards, miles conventer.***"<<endl;
for(;;)
{
cout<<"|Chce zamienic: "<<endl;
cout<<"|m. metry"<<endl;
cout<<"|c. cale"<<endl;
cout<<"|j. jardy"<<endl;
cout<<"|e. mile"<<endl;
cout<<"|"; x=getch();
menuengine(x);
}
return 0;
}
string qp;
void menuengine(char a)
{
char x;
switch(a)
{
case 'm':
qp="m";
menu();
x=getch();
qp.insert(1,menuengine2(x));
break;
case 'c':
qp="c";
menu();
x=getch();
qp.insert(1,menuengine2(x));
break;
case 'j':
qp="j";
menu();
x=getch();
qp.insert(1,menuengine2(x));
break;
case 'e':
qp="e";
menu();
x=getch();
qp.insert(1,menuengine2(x));
break;
default: error();
}
float jednostka;
switch(qp[0])
{
case 'm':
cout<<"|Wpisz metry: "; cin>>jednostka;
cout<<"| "<<jednostka<<" metrow to: ";
break;
case 'c':
cout<<"|Wpisz cale: "; cin>>jednostka;
cout<<"| "<<jednostka<<" cali to: ";
break;
case 'j':
cout<<"|Wpisz jardy: "; cin>>jednostka;
cout<<"| "<<jednostka<<" jardow to: ";
break;
case 'e':
cout<<"|Wpisz mile: "; cin>>jednostka;
cout<<"| "<<jednostka<<" mil to: ";
break;
}
switch(qp[1])
{
case 'm':
cout<<conventer(jednostka, qp)<<" metrów"<<endl;
break;
case 'c':
cout<<conventer(jednostka, qp)<<" cali"<<endl;
break;
case 'j':
cout<<conventer(jednostka, qp)<<" jardow"<<endl;
break;
case 'e':
cout<<conventer(jednostka, qp)<<" mil"<<endl;
break;
}
cout<<"==============================================="<<endl;
}
void menu()
{
cout<<"na "<<endl;
cout<<"|m. metry"<<endl;
cout<<"|c. cale"<<endl;
cout<<"|j. jardy"<<endl;
cout<<"|e. mile"<<endl;
}
string menuengine2(char a)
{
switch(a)
{
case 'm': return "m"; break;
case 'c': return "c"; break;
case 'j': return "j"; break;
case 'e': return "e"; break;
default: error(); break;
}
}
float conventer(float a, string qp)
{
if((qp=="mm")||(qp=="cc")||(qp=="jj")||(qp=="mm")) return a;
else if(qp=="mc") return a*100/2.54;
else if(qp=="mj") return a*0,9144;
else if(qp=="me") return a*1000/1,609344;
else if(qp=="cm") return a*0.0254;
else if(qp=="cj") return a*0.0277777778;
else if(qp=="ce") return a*1.57828283*10*-5*-5;
else if(qp=="jm") return a*0.000568181818;
else if(qp=="jc") return a*36;
else if(qp=="je") return a*0.000568181818;
else if(qp=="em") return a*1609.344;
else if(qp=="ec") return a*63360;
else if(qp=="ej") return a*1760;
}
void error()
{
cerr<<"nie ma takiego wyboru"<<endl;
exit(0);
}
Z góry przepraszam że kod jest taki pogmatwany, ale ćwiczyłem podprogramy i tak wyszło :p.
Chciałem zaznaczyc miejsca w kodzie, ale nie bardzo wiem jak