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 7

    usw.

    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.


Anmelden zum Antworten