Wie bindet man Funktionen richtig ins Hauptprogramm ein?



  • Hallo!

    Ich lerne seit einigen Wochen C mit Hilfe eines Buches und bin jetzt soweit, dass ich versuche, Funktionen in ein Hauptprogramm einzubinden.

    Ich dachte eigentlich, dass ich das Prinzip verstanden hätte. Folgendes Programm funktioniert aber einfach nicht so, wie es soll. Vielleicht kann mir ja jemand erklären, was ich falsch mache.
    Zur Erklärung: Ich will 2 Zahlen a und b eingeben und möchte dann das Ergebnis der Aufgabe a hoch b erhalten. Die Funktion a hoch b habe ich aus einem Buch. Einzeln funktioniert sie auch, nur als Funktion in einem Programm funktionierts nicht.

    # include<stdio.h>
    
    float funktion_a_hoch_b(float a, float b)
    {
        float erg = 1;
        int i;
        for(i = 1; i <= b; i = i + 1)
        {
            erg = erg * a;
            return erg;
        }
    }
    
    int main(void)
    {
        float Basis;
        float Exponent;
        float resultat;
    
        printf("Basis und Exponent eingeben!\n");
        scanf("%f %f", &Basis, &Exponent);
    
        resultat = funktion_a_hoch_b(Basis, Exponent);
        printf("%f", resultat);
    }
    

    Wenn ich das Programm ausführe passiert folgendes: Der Wert, den ich als Basis eingebe, der wird jedesmal als Ergebnis ausgegeben, egal was ich eingebe.
    Ich habe das Einbinden von Funktionen mit anderen Funktionen (Addition, x zum Quadrat) ausprobiert und da hats funktioniert. Weiß echt nicht, warum das hier nicht läuft.
    Falls mir jemand helfen kann, vielen Dank schonmal!



  • also

    deine for-schleife läuft nicht richtig, da du den return in sie hinein gepackt hast. du willst ja das ergebniss nach dem berechenen zurück haben!



  • ps: fals unverständlich..

    setze den return erg aus der for schleife raus.

    ->an das ende der funtion.

    da du beim ersten durchlauf schon "rausfliegst" somit ist erg=a



  • @hmmm:

    Jau, Du hast recht, jetzt funktionierts! Im Nachhinein total logisch!

    Vielen Dank!


Anmelden zum Antworten