Erklärung zu einem Quellcode bitte
-
Hallo

Ein Kommiliton hat mir eben einen Quellcode zugeschickt den ich iwie nicht verstehe, er mir aber auch selber nicht erklären kann warum der Code so funktioniert wie er funktioniert...
Mein Problem ist der funktionsaufruf in dem knapsack aufgerufen wird, aber ganz oben einmal knapsack definiert ist und aber genauso unten, wie geht das?Hier der Quelltext dazu:
#include <cstdio> #include <cstring> #include <iostream> int knapsack( const int currentVolume, const int i ); const int maxN = 300; const int maxV = 100000; const int resultLength = ( maxV + 1 ) * sizeof( int ); int V; int n; int v[maxN]; int results[maxN][maxV + 1]; int main() { printf("Bitte geben Sie mit einem Leerzeichen getrennt voneinander ihr Budget und die anzahl ihrer Produkte ein: "); fscanf( stdin, "%d %d", &V, &n ); for( int i = 0; i < n; i++ ){ printf("\nPreis von Artikel%d: ",i+1); fscanf( stdin, "%d", &( v[i] ) );} for( int i = 0; i < n; i++ ) memset( results[i], -1, resultLength ); printf( "%d\n", knapsack( V, 0 ) ); return 0; } int knapsack( const int currentVolume, const int i ) { if( i < n ) { if( results[i][currentVolume] != -1 ) return results[i][currentVolume]; int a = knapsack( currentVolume, i + 1 ); int b = 0; if( currentVolume - v[i] >= 0 ) b = v[i] + knapsack( currentVolume - v[i], i + 1 ); results[i][currentVolume] = std::max( a, b ); return results[i][currentVolume]; } return 0; }
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum C++ (auch C++0x und C++11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich verstehe die Frage nicht.. die Funktion ist nur einmal definiert, das oben ist eine Deklaration, keine Definition. (Logisch, da steht doch auch gar nicht was die Funktion machen soll.^^)
-
Zeile 6 ist eine Deklaration, die sagt einem Compiler wie etwas (hier eine Funktion) benutzbar ist. Zeile 29 ist eine Definition, dies sagt einem Compiler wie etwas wirklich konkret aussieht, so dass daraus ausführbarer Code erzeugt werden kann.
Das Programm ist übelst schlecht geschrieben. Das fängt schon damit an, dass es C++ ist, obwohl es wie C aussieht und du ja anscheinend auch C erwartest. Danach wird's noch schlimmer. Nimm es dir nicht zum Vorbild.
-
Die Deklaration (Prototyp) kannst du am ; am Ende der Zeile erkennen.