Hej, to znowu ja. dzisiaj poczytalem o switch i chciałem napisac program z wykorzystaniem tego, ale dev c++ daje mi jakieś blędy, których nie umiem naprawic.
chyba porwałem sie z motyką na słoce, ale… jeszcze do końca nie wiem jak powinien wygladac ten kod, chciałe sprawdzić po kompilacji i ew. poprawić, no ale jak mi się nie kompiluje…
//obliczanie obwodu i pola prostokata
#include
#include
int Obwod ( int nDlugosc1, int nDlugosc2)//funkcja liczaca obwod prostokata
{
return 2*(nDlugosc1 + nDlugosc2);
}
int Pole ( int nDlugosc1, int nDlugosc2)//funkcja liczaca pole prostokata
{
return nDlugosc1*nDlugosc2 ;
}
int Polet //funkcja liczaca pole trojkata
{
return (nDlugosc1*ndlugosc2)/2 ;
}
int Polek //funkcja liczaca pole kola
{
return(nDlugosc1*nDlugosc1)*3.14 ;
}
int Obwodk//funkcja liczaca obwod kola
{
return 2*(3.14*nDlugosc1) ;
}
int main()
{
int nWybor;
std::cout << (" Wybierz figure, ktorej pole i obwod chcesz policzyc ") <
std::cout << (" 1.Prostokat ") << std::endl;
std::cout << (" 2.Trojkat ") << std::endl;
std::cout << (" 3. Kolo ") << std::endl;
std::cin >> nWybor;
int nWartosc1;
std::cout << (" Wprowadz dlugosc pierwszego boku(musi to byc liczba calkowita).Dla trojkata wprowadz podstawe. ") << std::endl;
std::cin >> nWartosc1;
int nWartosc2;
std::cout << (" Wprowadz dlugosc drugiego boku rowniez w liczbie calkowitej. Dla trojkata wprowadz wysokosc. ") << std::endl;
std::cin >> nWartosc2;
switch (nWybor)
{
case 1: std::cout << (" Obwod prostokata to ") << Obwod(nWartosc1, nWartosc2) << std::endl;
std::cout << (" Pole prostokata to ") << Pole(nWartosc1, nWartosc2) << std::endl; break;
case 2: std::cout << (" Niestety dla trojkata umiem policzyc tylko pole. Pole trojkata to ") << Polet(nWartosc1, nWartosc2)<<
std::endl; break;
case 3: std::cout << (" Pole kola to ") << Polek(nWartosc1) << (".") <<
("Obwod kola to ") << Obwodk(nWartosc1) << (".") << std::endl; break;
}
getch();
}
Znowu mam problem. Poza tym, że nie dałem float i wyniki są całkowite(ale to łatwo zrobić), do policzenia pola i obwodu koła jest potrzebny tylko promień, a program pyta o 2 parametry. Użułem więc if i else, ale teraz dla każdej figury pyta o promien koła #-o
//obliczanie obwodu i pola prostokata
#include
#include
int Obwod ( int nDlugosc1, int nDlugosc2)//funkcja liczaca obwod prostokata
{
return 2*(nDlugosc1 + nDlugosc2);
}
int Pole ( int nDlugosc1, int nDlugosc2)//funkcja liczaca pole prostokata
{
return nDlugosc1*nDlugosc2 ;
}
int Polet ( int nDlugosc1, int nDlugosc2) //funkcja liczaca pole trojkata
{
return (nDlugosc1*nDlugosc2)/2 ;
}
int Polek ( int nDlugosc1) //funkcja liczaca pole kola
{
return int((nDlugosc1*nDlugosc1)*3.14) ;
}
int Obwodk ( int nDlugosc1)//funkcja liczaca obwod kola
{
return 2*(int(3.14*nDlugosc1)) ;
}
int main()
{
int nWybor;
std::cout ("Wybierz figure, ktorej pole i obwod chcesz policzyc ")
std::cout ("1.Prostokat ") std::endl;
std::cout ("2.Trojkat ") std::endl;
std::cout ("3. Kolo ") std::endl;
std::cin nWybor;
int nWartosc1;
int nWartosc2;
if(nWybor=3)
{
std::cout ("wprowadz promien kola")
std::cin nWartosc1;
}
else
{
int nWartosc1;
std::cout ("Wprowadz dlugosc pierwszego boku(musi to byc liczba calkowita.)")
std::cin nWartosc1;
int nWartosc2;
std::cout ("Wprowadz dlugosc drugiego boku rowniez w liczbie calkowitej.")
std::cin nWartosc2;
}
switch (nWybor)
{
case 1: std::cout ("Obwod prostokata to ") Obwod(nWartosc1, nWartosc2) std::endl;
std::cout ("Pole prostokata to ") Pole(nWartosc1, nWartosc2) std::endl; break;
case 2: std::cout ("Niestety dla trojkata umiem policzyc tylko")
Polet(nWartosc1, nWartosc2)
std::endl; break;
case 3: std::cout ("Pole kola to ") Polek(nWartosc1) (".")
std::endl("Obwod kola to ") Obwodk(nWartosc1) (".") std::endl; break;
}
getch();
}
Nie mam ochoty przedzierać się przez twoje nagromadzenie funkcji. Jest to mało czytelne. A skoro chcesz się nauczyć switcha to tylko jego użyłbym to tego zadania. W każdym bądź razie ja bym to zrobił na ten kształt, zamiast walić nonsensowne ify itd.