Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

kann mir jemand sagen wo hier im Programm der fehler ist?

danke

#include <stdio.h>


int eingabe(int *basis, int *exponent)

{

    printf("Bitte geben Sie die Basis ein:\n");

    scanf("%d", basis);

    printf("Bitte geben Sie den Exponenten ein:\n");

    scanf("%d", exponent);

}


int ausgabe(int ergebnis)

{

    printf("Das Ergebnis ist %d.\n", ergebnis);

}


int rechnung(int *ergebnis, int basis, int exponent)

{

    if (exponent == 0)

       return 1;

    *ergebnis = basis * rechnung(basis, exponent - 1);


    ausgabe(*ergebnis);

}


int main(void)

{

    int basis, exponent, ergebnis;


    do

    {

        eingabe(&basis, &exponent);

        rechnung(&ergebnis, basis, exponent);

    }

    while (basis != 0);


    return 0;

}

Der Fehler? Da sind sehr viele.

Sieht eher nach einer schulischen Aufgabe aus, kann das sein? ;)

schau doch mal ob die Funktionen auch das zurückgeben, was sie zurückgeben sollen... Und auch ob sie das kriegen was sie kriegen sollen...

ja is weniger ne schulische aufgabe obwohl wir potenzrechnen schon schreiben sollten.

das programm wollte ich nur als kleine übung schreiben =)

sind da wirklich so viele fehler? der compiler zeigt nur 2 an

[Warning] passing arg 1 of 'rechnung' makes pointer from integer without a cast

too few arguments to function 'rechnung'

beide im unterprogramm 'rechnung' und zeile 20

Ohne die Zeilen gezählt zu haben tipp ich mal stark dass der Fehler hier liegt:

*ergebnis = basis * rechnung(basis, exponent - 1);

Was fällt Dir auf? Was erwartet die Fkt. und was kriegt sie?

Ohne die Zeilen gezählt zu haben tipp ich mal stark dass der Fehler hier liegt:

*ergebnis = basis * rechnung(basis, exponent - 1);

Was fällt Dir auf? Was erwartet die Fkt. und was kriegt sie?

also die erwartet eine basis und nen exponenten.

einen fehler konnte ich beheben.... die erste fehlermeldung war das

So hast Du das aber nicht implementiert. Hier nochmal der Prototyp:

int rechnung(int *ergebnis, int basis, int exponent)

Die kriegt einen Zeiger auf nen int und 2 ints. Im Aufruf von der main aus hast Du es auch richtig gemacht aber die Rekursion ist falsch.

im moment stehts die zeile so bei mir drin

*ergebnis = basis * rechnung(&basis, exponent - 1);

Hallo,

im moment stehts die zeile so bei mir drin

*ergebnis = basis * rechnung(&basis, exponent - 1);

Na das stimmt mit Sicherheit nicht, da rechnung() drei Argumente haben möchte:

int rechnung(int *ergebnis, int basis, int exponent)

Nic

aaaaaargh.....

danke ^^

jetzt geht es zwar zu kompilieren aber ich bekomme völlig falsche ergebnisse =)

werds weiter versuchen =)

sooooo.

endlich gehts :rolleyes:

wens interessiert hab ich hier den quellcode =)

werd noch n paar fehler abfangen. z.B dass keine kommazahlen benutzt werden können.

#include <stdio.h>


int eingabe(int *basis, int *exponent)

{

    printf("Bitte geben Sie die Basis ein:\n");

    scanf("%d", basis);

    printf("Bitte geben Sie den Exponenten ein:\n");

    scanf("%d", exponent);

}


int rechnung(int basis, int exponent)

{

    if (exponent == 0)

       return 1;

    return basis * rechnung(basis, exponent - 1);



}


int main(void)

{

    int basis, exponent;


    do

    {

        eingabe(&basis, &exponent);

        rechnung(basis, exponent);

        printf("Das Ergebnis ist: %d\n", rechnung(basis, exponent));

    }

    while (basis != 0);


    return 0;

}

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.