myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Ungelesen 19.11.12, 17:43   #1
Shuyin
Mitglied
 
Registriert seit: Jun 2009
Beiträge: 348
Bedankt: 181
Shuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt Punkte
Standard Rekursion in C++ (mit einer Klasse)

Hallo Leute

Ich würde gerne eine Rekursion in C++ realisieren aber weiß nicht, wie der Aufruf lautet.

Ich habe hier folgende Sachen:

Die Klasse "Fraction2" (ggT steht in private.. das hat schon seine Richtigkeit da ich noch eine Vererbung habe.. hab aber jetzt ein bissl umgeändert)

class Fraction2{
public:

private:
int ggT(int a, int b);
int minimize(void);
};


und ich würde gerne den größten gemeinsamen Teiler herausfinden und habe auf Wiki schon den Algorithmus herausgefunden.

soviel habe ich:

int Fraction2::ggT(int a, int b)
{
if(b==0)
return a;
else return Fraction2::ggT(int b, a % b);

}

nur meckert er bei meiner else abzweigung.

int (Error: Der Typname ist nicht zulässig)
b (Error: Zu wenig Argumente im Funktionsaufruf)

wie kann man denn jetzt Fraction2 nochmal aufrufen??

In C weiß ich wie es geht..


Danke für die Hilfe =)
Shuyin ist offline   Mit Zitat antworten
Ungelesen 19.11.12, 18:10   #2
slahn
Erfahrenes Mitglied
 
Benutzerbild von slahn
 
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
slahn ist noch neu hier! | 0 Respekt Punkte
Standard

Schau dir noch mal genau deinen Aufruf von ggT(int, int) im else-Zweig an ...

Bei if schreibst du ja auch nicht "if(int b == 0)" warum also bei ggT(int, int) ?
__________________
"[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]" (Klopfers Vater)
slahn ist offline   Mit Zitat antworten
Ungelesen 19.11.12, 18:53   #3
thunder_2011
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 2
Bedankt: 1
thunder_2011 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Shuyin Beitrag anzeigen

class Fraction2{
public:

private:
int ggT(int a, int b);
int minimize(void);
};

int Fraction2::ggT(int a, int b)
{
if(b==0)
return a;
else return Fraction2::ggT(int b, a % b);

}

...
3 Fehler fallen mir sofort auf:

1.) else return Fraction2::ggT(int b, a % b);
Hier ist das "int" zuviel. Du willst doch den "b"-Wert übergeben und nicht definieren, was auch nicht geht beim Funktionsaufruf.

2.) else return Fraction2::ggT(int b, a % b);
Du ruft die Funktion "ggT" als statisch Funktion auf, obwohl sie nicht als static definiert wurde.

3.) In der Kassendefinition (Header-File) wurde keine PUBLIC-Methode angegen, sonden auschlüßlich PRIVATE-Funtionen, die von außen nicht aufrufbar sind.

Sollte dann in etwas so aussehen (Als Inline-Funktion):

class Fraction2{
public:
int ggT(int a, int b) {
if(b==0) {
return a;
}
else {
return ggT(b, a % b);
}
}
};

Test mit:

Fraction2 fr2;
int ggt=fr2.ggt(10,2);
thunder_2011 ist offline   Mit Zitat antworten
Ungelesen 20.11.12, 04:46   #4
Shuyin
Mitglied
 
Registriert seit: Jun 2009
Beiträge: 348
Bedankt: 181
Shuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt PunkteShuyin leckt gerne myGully Deckel in der Kanalisation! | 10255604 Respekt Punkte
Standard

jo hab mein fehler entdeckt ;-)

hab aber auch noch eine andere Methode gefunden..

int Fraction2::ggT(int a, int b)
{
int h;
while(b!=0)
{
h=a%b;
a=b;
b=h;
}


}

nur hatte es mich genervt, nicht zu wissen wie man eine Rekursion in c++ benutzt.

Danke leute =)
Shuyin ist offline   Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr.


Sitemap

().