Argument domniemany
Ostatnio zmodyfikowano 2013-11-05 09:13
Azaran Temat założony przez niniejszego użytkownika |
Argument domniemany » 2013-10-30 16:13:25 Witam! Tworzę sobie program do przeliczania temperatury. Oto on: #include <iostream> #include <cstdlib> using namespace std;
void temperatura( double stopnie, int skala ); void pauza();
int main() { double stopnie; int skala; cout << "Wpisz temperature: "; cin >> stopnie; cout << "Wpisz skale (0 - Celsjusze, 1 - Kelwiny): "; cin >> skala; temperatura( stopnie, skala ); pauza(); }
void temperatura( double stopnie, int skala = 0 ) { cout << "Temperatura wynosi: "; switch( skala ) { case 0: cout << stopnie << "C\n"; break; case 1: cout <<( stopnie + 273 ) << "K\n"; break; } } void pauza() { system( "pause" ); } Jak zrobić, aby nie trzeba było zawsze wpisywać skali?? Naprzykład, gdy wypisze na konsoli: Wpisz skale (0 - Celsjusze, 1 - Kelwiny): potwierdzić Enter'em i samo "domniema", że wpisałem 0?? Jak widać zastosowałem argumenty domniemane, ale to nie działa. Proszę o odpowiedź. PS. Jeśli rozwiązanie nie będzie "dla początkujących" nie musicie mi go tłumaczyć, poznam je podczas dalszej nauki C++. |
|
pekfos |
» 2013-10-30 16:17:18 To tak nie działa. |
|
seprob |
» 2013-10-31 21:40:37 Można pobrać dane wejściowe funkcją getline do jakiejś zmiennej typu string i sprawdzić funkcją składową empty czy string jest pusty i wtedy wywołać funkcję z argumentem domniemanym. |
|
den93 |
» 2013-10-31 22:37:24 Domniemanie musi być w deklaracji funkcji, zaś w definicji niekoniecznie. |
|
madmike44 |
» 2013-11-05 09:13:54 Argumenty domyślne są zawsze definiowane w deklaracji funkcji, na samym końcu listy argumentów. Przykłady: void funkcja1( float arg1, double arg2, char arg3, int arg4 = 100 ); void funkcja2( float arg1, double arg2, char arg3 = 'm', int arg4 = 100 );
Co do Twojego programu - po wciśnięciu entera poprostu wpisujesz kod znaku do zmiennej całkowitej (występuje rzutowanie na int), po czym wywołujesz funkcję z dwoma argumentami, co powoduje brak potrzeby skorzystania z argumentu domyślnego. Rozwiązanie: Sprawdzaj w instrukcji if, co zostało wprowadzone z klawiatury - jeżeli został naciśnięty jedynie enter, wywołuj swoją funkcję w taki sposób: Podajesz tylko pierwszy argument, więc kompilator wie, że ma skorzystać z deklaracji (to musisz u siebie poprawić): void temperatura( double stopnie, int skala = 0 );
, a tym samym z argumentu domniemanego. |
|
« 1 » |