Sh4Ku2 Geschrieben 16. Dezember 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
marcom Geschrieben 16. Dezember 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sh4Ku2 Geschrieben 16. Dezember 2006 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
marcom Geschrieben 16. Dezember 2006 Teilen Geschrieben 16. Dezember 2006 Und was sagt der Compiler? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sh4Ku2 Geschrieben 16. Dezember 2006 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
marcom Geschrieben 16. Dezember 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sh4Ku2 Geschrieben 16. Dezember 2006 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
marcom Geschrieben 16. Dezember 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sh4Ku2 Geschrieben 16. Dezember 2006 Autor Teilen Geschrieben 16. Dezember 2006 im moment stehts die zeile so bei mir drin *ergebnis = basis * rechnung(&basis, exponent - 1); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 17. Dezember 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sh4Ku2 Geschrieben 17. Dezember 2006 Autor Teilen Geschrieben 17. Dezember 2006 aaaaaargh..... danke ^^ jetzt geht es zwar zu kompilieren aber ich bekomme völlig falsche ergebnisse =) werds weiter versuchen =) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sh4Ku2 Geschrieben 17. Dezember 2006 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.