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; }
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...
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
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
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?
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
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.
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);
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
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 =)
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; }
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden