Veröffentlicht 16. Dezember 200618 j 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; }
16. Dezember 200618 j 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...
16. Dezember 200618 j 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
16. Dezember 200618 j [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
16. Dezember 200618 j 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?
16. Dezember 200618 j 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
16. Dezember 200618 j 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.
16. Dezember 200618 j im moment stehts die zeile so bei mir drin *ergebnis = basis * rechnung(&basis, exponent - 1);
17. Dezember 200618 j 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
17. Dezember 200618 j aaaaaargh..... danke ^^ jetzt geht es zwar zu kompilieren aber ich bekomme völlig falsche ergebnisse =) werds weiter versuchen =)
17. Dezember 200618 j sooooo. endlich gehts 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.