Cześć, mam problem z napisaniem programu, który wchodzi w zestaw ćwiczeń z książki.
Program ma przyjmować 1 liczbę i jej jednostkę(dozwolone cm,m,cal,st), najlepiej przy użyciu
while(cin>>liczba && cin>>jednostka) {...}
Po czym ma zapamiętywać:
1.Sumę wszystkich wpisanych liczb.
2.Ilość wszystkich wpisanych liczb.
3.Najmniejszą i największą z podanych liczb.
4.Przy każdym podaniu liczby i jednostki wyświetla się liczba wraz z jednostką i jeśli jest ona dotychczas największa lub
najmniejsza użytkownik zostaje o tym powiadomiony.
5.Po wpisaniu | program ma wyświetlić wszystkie zapisywane rzeczy takie jak najmniejsza i największa liczba itd.
Oczywiście nie wspomnę, że program jest przygotowany na nieobsługiwane typy jednostek.
Więc większość z tego ogarnąłem lecz kilka rzeczy nie mogę rozgryźć.
1.Używając
while(cin>>liczba && cin>>jednostka) {...}
i chcąc aby po naciśnięciu | program wypisał statystyki powstają problemy. Znak | zostaje zapisany do zmiennej liczba, która nie
obsługuje znaków i program się wyłącza. Więc jak w takim przypadku zrobić żeby program wyświetlił statystyki bez żadnych problemów?
2.Drugie pytanie dotyczy funkcji:
int checkunit(int arg_in; string arg_unit; bool okej){
okej = true;
if (arg_unit != "cm" && arg_unit != "m" && arg_unit != "cal" && arg_unit != "st" && arg_unit != "|"){
cout << "Nieznana jednostka: " << arg_unit << "\n";
okej = false;
}
else if (arg_unit == "cm")
return arg_in;
else if (arg_unit == "m")
return arg_in * 100;
else if (arg_unit == "cal")
return arg_in * 2.54;
else if (arg_unit == "st")
return arg_in *30.8;
}
Nie wiedziałem w jaki sposób stworzyć funkcję która będzie miała 2 rezultaty, 1 to konwersja liczba na cm, a drugi to
czy jednostka jest obsługiwana. Próbowałem zmieniać jeden z argumentów funkcji, ale dostałem błędy że "bool okej" wygląda jak funkcja, ale nie ma parametrów. Nie mogę używać zmiennych globalnych. To pytanie nie jest tak ważne jak pierwsze, jeśli się tak nie da to zrobię oddzielną funkcję do sprawdzania, ale jestem po prostu ciekawy czy to możliwe.