#include <iostream>
#include<conio.h>
using namespace std;
int liczba;
char wybor;
int main()
{
while(true)
{
cout<<"Podaj liczbe: ";
cin>>liczba;
cout<< "MENU" <<endl;
cout<<"1.Celsjusz na Fahrenheit"<<endl;
cout<<"2-Celsjusz na Kelvin"<<endl;
cout<<"3.Kelvin na Fahrenheit"<<endl;
cout<<"4.Kelvin na Celsjusz"<<endl;
cout<<"5.Fahrenheit na Celsjusz"<<endl;
cout<<"6.Fahrenheit na Kelvin"<<endl;
wybor = getch();
switch(wybor)
{
{
case '1':
cout<<"Celsjusze na Fahrenheity= "<<(liczba × 1.8) + 32<<endl;break;
case '2':
cout<<"Celsjusze na Kelviny= "<<liczba + 273.15)<<endl;break;
case '3':
cout<<"Kelviny na Fahrenheity= "<<(liczba × 1.8) - 459.67<<endl;break;
case '4':
cout<<"Kelviny na Celsjusze= "<<liczba− 273.15<<endl;break;
case '5':
cout<<"Fahrenheity na Celsjusze= "<<(liczba − 32) /1.8<<endl;break;
case '6':
cout<<"Fahrenheity na Kelviny= "<<(liczba + 459.67) × 5/9<<endl;break;
ile_Fa(liczba);
ile_Ke(liczba);
ile_Fr(liczba);
ile_Cl(liczba);
ile_Ce(liczba);
ile_Kl(liczba);
}
void ile_Fa (float liczba)
{
cout<<"Na Fahrenheity: "<<((liczba × 1.8) + 32);
}
void ile_Ke (float liczba)
{
cout<<"Na Kelviny: "<<liczba + 273.15;
}
void ile_Fr (float liczba)
{
cout<<"Na Fahrenheity = "<<(liczba × 1.8) - 459.67;
}
void ile_Cl (float liczba)
{
cout<<"Na Celsjusze= "<<liczba − 273.15;;
}
void ile_Ce (float liczba)
{
cout<<"Na Celsjusze= "<<(liczba − 32) /1.8 ;
}
void ile_Kl (float liczba)
{
cout<<"Na Kelviny= "<<(liczba + 459.67) × 5/9 ;
}
}
return 0;
}
0
2
Mógłbyś opisać problem dokładniej, nie kompiluje się, złe wyniki, wyjątek?
0
(liczba × 1.8)
jakiś nowy c++ wyszedł? Nie ma takiego operatora!
Funkcja definiowana wewnątrz innej funkcji - lepiej jak jest poza main
.
2
To jest okropne, masz od cholery formuł oraz pozycji menu (3x3-3=6), a co jeżeli trzeba będzie dodać jeszcze dwie jednostki temperatury będzie 5x5-5=20?
Nie połapiesz się w tym nigdy!
Zaś wystarczy dać przy każdym współczynniki przeliczenia np na Kelvina.
Dodawanie kolejnych jednostek to tylko jeden wiersz na jednostke.
#include <iostream>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;
struct { string code,name; double mul,add; } tmap[]=
{
{"K","Kelvin",1,0},
{"C","Celsjusz",1,-273.15},
{"F","Fahrenheit",9.0/5,-459.67},
};
int FindCode(const string &code)
{
for(int i=0;i<sizeof(tmap)/sizeof(*tmap);++i) if(code==tmap[i].code) return i;
return -1;
}
double Convert(const string &from,const string &to,double value)
{
if(from==to) return value;
int ifrom=FindCode(from),ito=FindCode(to);
if((ifrom<0)||(ito<0)) return nan("");
return ((value-tmap[ifrom].add)/tmap[ifrom].mul)*tmap[ito].mul+tmap[ito].add;
}
int main()
{
double value;
for
(
string from,to;
cout<<"Podaj dane (np. 100F C): " && cin>>value>>ws>>from>>ws>>to;
cout<<value<<from<<" = "<<Convert(from,to,value)<<to<<endl
)
{}
return 0;
}