2016-10-02 2 views
0

Ceci est ma première affectation majeure en POO en C++. pour ma tête m'a donné la définition de classe suivante:débutant dans OOP en C++, problèmes d'affectation

using namespace std; 

class Fraction 
{ 
    public: 
    Fraction(void); 
    Fraction(int aN, int aD); 
    int getNumerator(); 
    int getDenominator(); 
    Fraction adder(Fraction aF); 
    ~ Fraction(void); 
} 

L'affectation dit que la fonction d'addition est censé fonctionner d'une manière où l'objet courant est le premier opérande et le paramètre de la fonction est la deuxième opérande. ex. Si l'objet est 1/6 et le paramètre est 1/3 alors l'additionneur est supposé donner 3/6.

Mes questions sont suivantes:

a) Les deux getNumerator() et getDenominator() sont mis à retourner un entier, mais je ne sais pas ce que sommateur (Fraction Af) est censé revenir. Il dit qu'il est censé renvoyer une instance de la classe Fraction. Il ne peut pas s'agir d'un nombre entier même si mon produit est supposé en produire deux, si nous devions utiliser les paramètres définis dans le constructeur.

par exemple c'est le cpp j'ai construit jusqu'à présent:

#include "fraction.h" 
#include <string> 

Fraction::Fraction() 
{ 
} 

Fraction::Fraction(int aN, int aD) { 
    numerator = aN; 
    denominator= aD; 
} 

int Fraction::getNumerator() { 
    return numerator; 
} 

int Fraction::getDenominator() { 
    return denominator; 
} 

Fraction Fractiom::adder(Fraction aF) { 
    aF = 1/3?  
    return ?? 
} 

Fraction::~Fraction() 
{ 
} 

La question n'est pas l'arithmétique. Je peux comprendre cela. Je ne sais pas ce que cet additionneur de fonction peut retourner. J'ai besoin de l'exemple le plus simple donc à peu près tout compile, juste pour savoir de quelle taille je traite (un entier, une seule chaîne, etc.)

Ensuite, si nous regardons la source que j'ai faite.

#include <iostream> 
#include "fraction.h" 
using namespace std; 

int main() { 

    Fraction f1(1, 6); 
    cout << f1.getNumerator() << "/" << f1.getDenominator() << endl; 
    cin.get(); 
    return 0; 
} 

Le premier exemple montre à quel point j'utilise getNumerator() et getDenominautor() to produce a random Fraction`.

b) Je suppose que je peux écrire f1.adder(aF) pour produire mon produit quand j'obtiens l'arithmétique dans le cpp droit, ou est-ce que cette hypothèse est fausse?

+0

Mon principal dos n'inclut pas la fonction d'additionneur, outre le fait que je ne peux pas égaler aF avec et int, puisqu'il s'agit d'un objet Fraction. Je n'ai juste pas d'opérateur "=" correspondant à ces opérandes. – Morphalog

+0

1) Je voulais dire qu'il ne fait pas partie de la principale pour le moment. 2) Je pense que j'ai mal compris votre point alors. Il semble que vous disiez que je peux changer les intégrales en F1 pour obtenir une nouvelle fraction, mais je le sais. Je ne sais pas comment initilaize mon aF ou comment faire mon additionneur, retourner un objet fraction – Morphalog

+0

Vous n'avez pas besoin de retourner 'aF', au lieu d'initialiser un autre' Fraction' comme 'Fraction result (..., ...) ; retourner le résultat; 'ou le faire directement dans la déclaration de retour comme le montre madmax. – BeyelerStudios

Répondre

3

a) Il est clair que votre méthode Fraction :: sommateur doit retourner un autre objet Fraction comme ceci:

... 
return Fraction(resultingNumeratorHere, resultingDenominatorHere); 

b) Certainement. Vous devez implémenter l'arithmétique dans le cpp

+0

J'ai essayé d'écrire return Fraction (getnumerator(), getdenominator) – Morphalog

+0

J'ai essayé d'écrire Fraction de retour (getnumerator(), getdenominator), juste pour récupérer une fraction aléatoire sans rien ajouter. Le problème est quand je vais à mon principal, j'essaie de taper quelque chose comme cout << b1.adder() << endl ;. mais il dit à quelques arguments dans mon appel de fonction. J'ai besoin d'ajouter quelque chose dans l'additionneur() je suppose, mais quoi? – Morphalog

+0

Dans ce cas, vous renvoyez la copie exacte de votre objet. Vous devez utiliser quelque chose comme: Fraction Fraction :: additionneur (Fraction af) { return Fraction (numérateur * af.nominateur + dénominateur * af.numerateur, dénominateur * af.dénominateur); } – madmax