Too few arguments to function
Ostatnio zmodyfikowano 2016-08-12 11:44
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. #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; }
|
|
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 ); |
|
mikim102 Temat założony przez niniejszego użytkownika |
» 2016-08-12 10:19:09 Jak to jeden? Przecież są dwa: n i k |
|
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ć;) |
|
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: #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ść? |
|
« 1 » |