Sh4Ku2 Geschrieben 16. Dezember 2006 Geschrieben 16. Dezember 2006 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; } Zitieren
marcom Geschrieben 16. Dezember 2006 Geschrieben 16. Dezember 2006 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... Zitieren
Sh4Ku2 Geschrieben 16. Dezember 2006 Autor Geschrieben 16. Dezember 2006 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 Zitieren
marcom Geschrieben 16. Dezember 2006 Geschrieben 16. Dezember 2006 Und was sagt der Compiler? Zitieren
Sh4Ku2 Geschrieben 16. Dezember 2006 Autor Geschrieben 16. Dezember 2006 [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 Zitieren
marcom Geschrieben 16. Dezember 2006 Geschrieben 16. Dezember 2006 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? Zitieren
Sh4Ku2 Geschrieben 16. Dezember 2006 Autor Geschrieben 16. Dezember 2006 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 Zitieren
marcom Geschrieben 16. Dezember 2006 Geschrieben 16. Dezember 2006 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. Zitieren
Sh4Ku2 Geschrieben 16. Dezember 2006 Autor Geschrieben 16. Dezember 2006 im moment stehts die zeile so bei mir drin *ergebnis = basis * rechnung(&basis, exponent - 1); Zitieren
nic_power Geschrieben 17. Dezember 2006 Geschrieben 17. Dezember 2006 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 Zitieren
Sh4Ku2 Geschrieben 17. Dezember 2006 Autor Geschrieben 17. Dezember 2006 aaaaaargh..... danke ^^ jetzt geht es zwar zu kompilieren aber ich bekomme völlig falsche ergebnisse =) werds weiter versuchen =) Zitieren
Sh4Ku2 Geschrieben 17. Dezember 2006 Autor Geschrieben 17. Dezember 2006 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; } Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.