Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Argument domniemany

Ostatnio zmodyfikowano 2013-11-05 09:13
Autor Wiadomość
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:
C/C++
#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++.
P-94857
pekfos
» 2013-10-30 16:17:18
To tak nie działa.
P-94859
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.
P-94991
den93
» 2013-10-31 22:37:24
Domniemanie musi być w deklaracji funkcji, zaś w definicji niekoniecznie.
P-94998
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:

C/C++
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:

C/C++
temperatura( stopnie );

Podajesz tylko pierwszy argument, więc kompilator wie, że ma skorzystać z deklaracji (to musisz u siebie poprawić):

C/C++
void temperatura( double stopnie, int skala = 0 );

, a tym samym z argumentu domniemanego.
P-95319
« 1 »
  Strona 1 z 1