Wątek przeniesiony 2021-04-01 10:55 z Edukacja przez somekind.

Mam stworzyć program, który z użyciem funkcji przeliczający temperatury ale nie wiem co mam żle.

0
#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;
}
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;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1