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

Too few arguments to function

Ostatnio zmodyfikowano 2016-08-12 11:44
Autor Wiadomość
mikim102
Temat założony przez niniejszego użytkownika
Too few arguments to function
» 2016-08-10 17:00:22
Witam,
Jestem początkującym i chciałbym was prosić o pomoc.
Błąd:
"error: too few arguments to function "float oblicz_n_minus_k_silnia"
Niezbyt wiem jak poprawnie zaradzić temu problemowi.
Jeżeli w funkcji oblicz_n_minus_k_silnia przypisze wartosci n i k np. int n=1 int k=1, to działa, ale chyba nie o to chodzi prawda?
Dodatkowo jeżeli n=k+1, to wyskakuje bład bo wychodzi dzielenie przez zero, jakiś pomysł gdzie błąd w założeniach?
Program ma za zadanie obliczyć wartość symbolu Newtona.


C/C++
#include <iostream>


using namespace std;
int oblicz_n_silnia( int n )
{
    if( n == 0 ) return 1;
   
    return oblicz_n_silnia( n - 1 ) * n;
}
int oblicz_k_silnia( int k )
{
    if( k == 0 ) return 1;
   
    return oblicz_k_silnia( k - 1 ) * k;
}

float oblicz_n_minus_k_silnia( int n, int k )
{
   
    if( n - k == 0 ) return 1;
   
    return oblicz_n_minus_k_silnia( n - k - 1 ) *( n - k );
}

int main()
{
    int n, k;
    cout << "Podaj n: ";
    cin >> n;
    cout << "\nPodaj k: ";
    cin >> k;
    while( n < k && k < 0 )
    {
        cout << "k i n musza byc wieksze od 0, oraz n musi byc >=k!\nSprobuj ponownie!" << endl;
        cout << "Podaj n: ";
        cin >> n;
        cout << "\nPodaj k: ";
        cin >> k;
    }
   
    if( n == 0 || k == n )
         cout << "1";
    else
         cout << "Wartosc symbolu Newtona wynosi: " << "\n" << oblicz_n_silnia( n ) /( oblicz_k_silnia( k ) * oblicz_n_minus_k_silnia( n, k ) );
   
   
   
   
    return 0;
}

P-150709
Garniturek
» 2016-08-10 18:07:27
Przekazujesz jeden argument do tej funkcji tutaj:
return oblicz_n_minus_k_silnia( n - k - 1 ) *( n - k );
P-150713
mikim102
Temat założony przez niniejszego użytkownika
» 2016-08-12 10:19:09
Jak to jeden? Przecież są dwa: n i k
P-150763
carlosmay
» 2016-08-12 10:43:31
Jak to jeden? Przecież są dwa: n i k
Są dwie zmienne w jednym wyrażeniu. Po obliczeniu wyrażenia mamy tylko jedną wartość przekazywaną do funkcji, czyli jeden argument.

Argumenty przekazywane do funkcji oddziela się przecinkiem, a w kodzie go nie widać;)
P-150764
mikim102
Temat założony przez niniejszego użytkownika
» 2016-08-12 11:44:48
Dobra! Mam to! Dzieki wielkie! Chwile mi zajęło zrozumienie ;P, ale czuje jak z każdym krokiem umiem i rozumiem coraz więcej, super. Jeszcze raz dzięki wielkie.
Ostatecznie (może komuś się przyda) mój kod programu wygląda tak:

C/C++
#include <iostream>


using namespace std;
int oblicz_n_silnia( int n )
{
    if( n == 0 ) return 1;
   
    return oblicz_n_silnia( n - 1 ) * n;
}
int oblicz_k_silnia( int k )
{
    if( k == 0 ) return 1;
   
    return oblicz_k_silnia( k - 1 ) * k;
}

float oblicz_n_minus_k_silnia( int n_minus_k )
{
    if( n_minus_k == 0 ) return 1;
   
    return oblicz_n_minus_k_silnia( n_minus_k - 1 ) *( n_minus_k );
}

int main()
{
    int n, k;
    cout << "Podaj n: ";
    cin >> n;
    cout << "\nPodaj k: ";
    cin >> k;
    while( n < k && k < 0 )
    {
        cout << "k i n musza byc wieksze od 0, oraz n musi byc >=k!\nSprobuj ponownie!" << endl;
        cout << "Podaj n: ";
        cin >> n;
        cout << "\nPodaj k: ";
        cin >> k;
    }
    int n_minus_k = n - k;
   
    if( n == 0 || k == n )
         cout << "1";
    else
         cout << "Wartosc symbolu Newtona wynosi: " << "\n" << oblicz_n_silnia( n ) /( oblicz_k_silnia( k ) * oblicz_n_minus_k_silnia( n_minus_k ) );
   
   
   
   
    return 0;
}

Macie jeszcze ew. jakieś uwagi do niego lub podpowiedzi na przyszłość?
P-150766
« 1 »
  Strona 1 z 1