A voir également:
- Débutant en C++; Problèmes dans un petit test
- Test pc - Guide
- Petit colis distribution - Forum Internet / Réseaux sociaux
- Petit 1 comme ² ✓ - Forum Windows
- Test ram - Guide
- Media test failure check cable - Astuces et Solutions
4 réponses
Hello !
Il faut aussi ne pas mettre en commentaire la ligne :
Ca doit marcher si tu le fais.
Remarque :
1. Les ";" après les blocs {} ne servent à rien.
2. La fonction doit retourner int mais tu n'es pas obligé de mettre un return.
3. La fonction print est inélégante.
4. Les opérateurs + et - sont définis dans ton programme comme des fonctions indépendantes de la classe, ce qui implique de les déclarer friend. Il est plus élégant de les déclarer comme des fonctions membre à part entière comme ci-dessou :
Take care !
Il faut aussi ne pas mettre en commentaire la ligne :
// friend Ratio operator+(const Ratio&, const Ratio&);
Ca doit marcher si tu le fais.
Remarque :
1. Les ";" après les blocs {} ne servent à rien.
2. La fonction doit retourner int mais tu n'es pas obligé de mettre un return.
3. La fonction print est inélégante.
4. Les opérateurs + et - sont définis dans ton programme comme des fonctions indépendantes de la classe, ce qui implique de les déclarer friend. Il est plus élégant de les déclarer comme des fonctions membre à part entière comme ci-dessou :
#include <iostream>
using namespace std;
class Ratio
{
public :
Ratio(int n=0, int d=1) : num(n), den(d) {}
Ratio(const Ratio& r) : num(r.num), den(r.den) {}
Ratio& operator=(const Ratio& r);
Ratio operator+(const Ratio& y) const;
Ratio operator*(const Ratio& y) const;
void print() const { cout << num <<'/' << den << endl; }
private :
int num, den;
};
Ratio& Ratio::operator=(const Ratio& r)
{
num = r.num;
den = r.den;
return *this;
}
Ratio Ratio::operator+(const Ratio& y) const
{
return Ratio(num * y.den + y.num * den, den * y.den);
}
Ratio Ratio::operator*(const Ratio& y) const
{
return Ratio(num * y.num, den * y.den);
}
int main()
{
Ratio x(22,7), y(-3,8);
Ratio w = x + y;
w = x * y;
w.print();
}
Take care !
Retour sur l
Bonjour,
Votre solution pour additionner deux fractions fonctionne à merveille !!
Merci.beaucoup.
En ce qui concerne les commentaires que j'ai introduits dans l'exemple, ils sont là pour faire tourner la multiplication.
Si je les enlève j'ai les deux erreurs que j'ai signalées. Pire que ça ! Des que j'utilise friend avec autre chose que la multiplication j'ai le meme message d'erreur. Est ce que ça peut venir de mon compilateur ?
François
Votre solution pour additionner deux fractions fonctionne à merveille !!
Merci.beaucoup.
En ce qui concerne les commentaires que j'ai introduits dans l'exemple, ils sont là pour faire tourner la multiplication.
Si je les enlève j'ai les deux erreurs que j'ai signalées. Pire que ça ! Des que j'utilise friend avec autre chose que la multiplication j'ai le meme message d'erreur. Est ce que ça peut venir de mon compilateur ?
François
Retour sur la fonction print...
(Je finis, y'a un chat qu'a marché sur le clavier.)
La fonction print mérite d'être remplacée par un opérateur d'insertion (<<) comme dans le programme suivant (où j'ai supprimé l'opérateur = déjà fournit par le langage) :
Cette fois, il faut déclarer en friend car le premier argument de l'opérateur n'est pas de type Ratio&.
Take care !
(Je finis, y'a un chat qu'a marché sur le clavier.)
La fonction print mérite d'être remplacée par un opérateur d'insertion (<<) comme dans le programme suivant (où j'ai supprimé l'opérateur = déjà fournit par le langage) :
#include <iostream>
using namespace std;
class Ratio
{
friend ostream& operator<<(ostream& Flux, const Ratio& R);
public :
Ratio(int n=0, int d=1) : num(n), den(d) {}
Ratio(const Ratio& r) : num(r.num), den(r.den) {}
Ratio operator+(const Ratio& y) const;
Ratio operator*(const Ratio& y) const;
private :
int num, den;
};
Ratio Ratio::operator+(const Ratio& y) const
{
return Ratio(num * y.den + y.num * den, den * y.den);
}
Ratio Ratio::operator*(const Ratio& y) const
{
return Ratio(num * y.num, den * y.den);
}
ostream& operator<<(ostream& Flux, const Ratio& R)
{
return Flux << R.num <<'/' << R.den;
}
int main()
{
Ratio x(22,7), y(-3,8);
Ratio w = x + y;
w = x * y;
cout << w << endl;
}
Cette fois, il faut déclarer en friend car le premier argument de l'opérateur n'est pas de type Ratio&.
Take care !
simplement moi
Messages postés
20
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
29 octobre 2004
2
25 sept. 2004 à 13:57
25 sept. 2004 à 13:57
bonjour
vous pourriez me faire débuuté en c++ parce que javais commencé le visual basic mais g vu que cété nul !
vous pourriez me faire débuuté en c++ parce que javais commencé le visual basic mais g vu que cété nul !