la fonction getDecimal retourne 0. Je sais pas pourquoi.
Bonjour,
Je suis un débutant en c++. Je travaille avec c++ depuis 1 mois à l'aide de poo. Il y a un problème dans ma fonction(getDecimal) parce que ça retourne toujours 0.
fraction.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #ifndef FRACTION_H
#define FRACTION_H
#include <iostream>
#include <string>
using namespace std;
class fraction
{
private:
int m_numerateur;
int m_denominateur;
public:
fraction(int arg1 = 0,int arg2 = 1);
int getDenominateur() const;
int getNumerateur() const;
void setDenominateur(int x);
void setNumerateur(int x);
void getFraction() const;
double getDecimal() const;
};
#endif |
head.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| #include <iostream>
#include "fraction.h"
using namespace std;
fraction::fraction(int arg1,int arg2)
{
m_numerateur = arg1;
m_denominateur = arg2;
}
int fraction::getDenominateur() const
{
return m_denominateur;
}
int fraction::getNumerateur() const
{
return m_numerateur;
}
void fraction::setNumerateur(int x)
{
m_numerateur = x;
}
void fraction::setDenominateur(int x)
{
m_denominateur = x;
}
void fraction::getFraction() const
{
cout << m_numerateur << "/" << m_denominateur;
}
void calculer(fraction &arg1,string arg2,fraction &arg3)
{
fraction resultat;
int dc;
int n1;
int n2;
int d2;
int nt;
if(arg2 == "+")
{
if(arg1.getDenominateur() != arg3.getDenominateur())
{
dc = arg1.getDenominateur() * arg3.getDenominateur();
n1 = arg1.getNumerateur() * arg3.getDenominateur();
n2 = arg3.getNumerateur() * arg1.getDenominateur();
nt = n1 + n2;
resultat.setNumerateur(nt);
resultat.setDenominateur(dc);
resultat.getFraction();
}
else
{
nt = arg1.getNumerateur() + arg3.getNumerateur();
resultat.setNumerateur(nt);
resultat.setDenominateur(arg1.getDenominateur());
resultat.getFraction();
}
}
if(arg2 == "-")
{
if(arg1.getDenominateur() != arg3.getDenominateur())
{
dc = arg1.getDenominateur() * arg3.getDenominateur();
n1 = arg1.getNumerateur() * arg3.getDenominateur();
n2 = arg3.getNumerateur() * arg1.getDenominateur();
nt = n1 - n2;
resultat.setNumerateur(nt);
resultat.setDenominateur(dc);
resultat.getFraction();
}
else
{
nt = arg1.getNumerateur() - arg3.getNumerateur();
resultat.setNumerateur(nt);
resultat.setDenominateur(arg1.getDenominateur());
resultat.getFraction();
}
}
if(arg2 == "*")
{
nt = arg1.getNumerateur() * arg3.getNumerateur();
dc = arg1.getDenominateur() * arg3.getDenominateur();
resultat.setNumerateur(nt);
resultat.setDenominateur(dc);
resultat.getFraction();
}
if(arg2 == "/")
{
n2 = arg3.getDenominateur();
d2 = arg3.getNumerateur();
nt = arg1.getNumerateur() * n2;
dc = arg1.getDenominateur() * d2;
resultat.setNumerateur(nt);
resultat.setDenominateur(dc);
resultat.getFraction();
}
}
double fraction::getDecimal() const
{
return m_numerateur / m_denominateur;
} |
training.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <iostream>
#include "head.h"
using namespace std;
int main()
{
fraction a(2,5);
fraction b(3,4);
cout << a.getDecimal();
cout << endl;
if(a.getDecimal() > b.getDecimal())
{
a.getFraction();
cout << " est plus grand que ";
b.getDecimal();
cout << endl;
}
else if(a.getDecimal() < b.getDecimal())
{
b.getFraction();
cout << " est plus grand que ";
a.getDecimal();
cout << endl;
}
system("pause");
return 0;
} |