einen Fehler mit der Funktion
-
Ausserdem benutzt man scanf so :
scanf("%d",&a);
-
Ausserdem benutzt man scanf so :
if( 1==scanf("%d",&a) ) { }
-
Danke allen:)
jetzt habe ich mein Programm so geschrieben#include<stdio.h> int ggtBerechnen(int a,int b); int main(){ int n,i,fi=0; printf("Geben Sie eine Zahl\n"); scanf("%d",&n); for(i=0;i<n;++i){ if(ggtBerechnen(n,i)==1) ++fi; } printf("%d",fi); return 0; } int ggtBerechnen(int a,int b){ if(a>b) ggtBerechnen(a-b,b); if(b>a) ggtBerechnen(a,b-a); if(a==b) return a; }
und ich kriege wieder einen fehler wenn ich es ausführe! aber ein fehler nach der ausführung und nicht bevor und der debugger zeigt kein problem!!:(
-
bafla13 schrieb:
und ich kriege wieder einen fehler wenn ich es ausführe! aber ein fehler nach der ausführung und nicht bevor und der debugger zeigt kein problem!!:(
Das ist doof.
Da meine Glaskugel dich gerade nicht orten kann, ist es ganz hilfreich wenn du einfach mal sagst, was für ein Fehler auftritt.Schau aber mal nach deinem i. Wie sieht denn z.B. der ggt von 10 und 0 aus ?
-
DirkB schrieb:
bafla13 schrieb:
und ich kriege wieder einen fehler wenn ich es ausführe! aber ein fehler nach der ausführung und nicht bevor und der debugger zeigt kein problem!!:(
Das ist doof.
Da meine Glaskugel dich gerade nicht orten kann, ist es ganz hilfreich wenn du einfach mal sagst, was für ein Fehler auftritt.Schau aber mal nach deinem i. Wie sieht denn z.B. der ggt von 10 und 0 aus ?
das Problem ist dass ich den Fehlern nach der Ausführung kriege,und dann muss ich mein Programm schließen und der Compiler zeig mir keinen Fehler sondern das Windows
-
Ich glaueb ich habe es gefunden,
das ist wegen dem dividieren durch 0 ,das habe ich nur jetzt bemerkt
danke;)
-
bafla13 schrieb:
Ich glaueb ich habe es gefunden,
das ist wegen dem dividieren durch 0 ,das habe ich nur jetzt bemerkt
danke;)Das meinte ich mit ggt von 10 und 0
bafla13 schrieb:
das Problem ist dass ich den Fehlern nach der Ausführung kriege,und dann muss ich mein Programm schließen und der Compiler zeig mir keinen Fehler sondern das Windows
Ist da denn keine Meldung von Windows gekommen? Auch der Hinweis dass das Programm abstürzt oder ewig läuft hilft bei der Fehlersuche.
Wir sind keine Hellseher.
(Wären wir welche, hätten wir den Lotto-Jackpot und wären sonstwo)
-
bafla13 schrieb:
int ggtBerechnen(int a,int b){ if(a>b) ggtBerechnen(a-b,b); if(b>a) ggtBerechnen(a,b-a); if(a==b) return a; }
Bin ich der einzige dem auffällt, daß dort ein paar return-Anweisungen fehlen? Tip: Was gibt die Funktion beim Aufruf
ggtBerechnen(4,)
zurück?
-
CStoll schrieb:
Bin ich der einzige dem auffällt, daß dort ein paar return-Anweisungen fehlen?
Nein, bist du nicht! Nur die alte Regel einer jeden Funktion Eingabe-Verarbeitung-Ausgabe (EVA) scheint in Vergessenheit geraten zu sein. Returns innerhalb einer Funktion haben starke Ähnlichlichkeit mit goto aus BASIC-Zeiten.
-
Zur Not hätte ich auch mit einer Hilfsvariable leben können, die am Ende der Funktion zurückgegeben wird. Aber die Ergebnisse der rekursiven Aufrufe wegzuwerfen und dann die Funktion ohne ein return zu verlassen kann nur Müll ergeben.
(nebenbei: ich gehöre nicht unbedingt zu den Verfechtern der "ein return in der Funktion"-Fraktion)