Resultate einer Funktion im main Programm abrufen
-
Hallo,
erstmal sorry für den unklaren titel.
jetzt zu meiner frage.gibt es irgendwie ne möglichkeit die ergebnisse aus mehreren funktionen nebneinander im main-programm auszugeben?
also dass ich zb schreibe "printf("...", funktion1,funktion2...) und dann die werte der jeweiligen funktionen jeweils nebeneinander ausgegeben werden und nicht untereinander?müsste irgendwie so aussehen
wert x wert y
1 2
3 4
6 7usw.
wobei ich die werte links in einer funktion berechne und die werte von y in einer andern.
danke schonmal
-
wert x wert y 1 2 3 4 6 7
-
printf("%d %d", funktion1(),funktion2())
-
das hab ich versucht, bekomme aber die fehlermeldung
type error in argument 2 to `printf'; 'void' is illegal
muss ich in der funktion irgendwie mit return etwas zurückgeben oder wie funktioniert das?
also meine funktion sieht so aus
void anzahlimsemester (void) { int c,anzahl=0,sem; for (sem=1;sem<=max;sem++) { for (c=0;c<=limit;c++) { zeiger = &data[0+c][0]; if (sem == *zeiger) anzahl = anzahl +1; } printf("Semester: %d Anzahl:%d\n", sem,anzahl); anzahl = 0; }
außerdem möchte ich von der funktion 2 werte zurückgeben, woher soll da das programm wissen, was ich überhaupt zurückgeben will oder wie funktioniert das?
entschuldigt bitte meine extrem leienhaften fragen...
-
Also erstmal wolltest du etwas von zwei verschiedenen Funktionen etwas zurückbekommen.
Dafür musst du die Funktion entsprechend deklarieren, d.h. du musst schreiben, das die Funktion einen Wert zurückgeben soll z.B:int anzahlimsemester();
Das bedeutet, das die Funktion einen Integerwert zurückgibt.Wenn du die Funktion als void deklarierst:
void anzahlimsemester();Dann bedeutet das, das die Funktion nichts zurückgibt und darum meckert dein Compiler.
----
Eine Funktion kann in C nicht zwei Werte zurückgeben. Möchtest du, das eine Funktion zwei Werte berechnet und die beiden Ergebnisse speichern, dann musst du
zwei Zeiger als Parameter übergeben.void zwei_werte( int* a, int* b ) { *a = 10; *b = 20; } int main() { int eins = 0, zwei = 0; zwei_werte( &eins, &zwei ); printf( "%d %d", eins, zwei ); return 0; }
Bei ganz vielen Werten kannst du u.a. Arrays als Parameter übergeben.
-
Oder eine Alternative: Du gibst einen struct zurück, der beide Werte zusammenfasst.