I'm doing a FRACTION program for one of my Programming classes and I'm getting some errors that I can't figure it out.
Here is the Assignment:
1. Convert the fraction structure into a class named fraction declared in a file named
fraction.h, with two private data members: an int numerator and an int denominator.
2. Convert the four arithmetic functions named add, sub, mult, and div into public
member functions, each accepting a single fraction object passed by value. Keep the
functions in fraction.cpp
3. Create a public constructor
a. taking two integer parameters, the numerator first, followed by the denominator
b. use a default argument to set the denominator to 1 if a denominator is not
specified (remember that it is possible to convert an integer n to the fraction n/1).
c. use the initializer list notation
d. make the constructor inline, defined within the class body.
e. move the “reduce to lowest terms” operation to the end of the constructor
4. Make the print function inline but define the body outside and below the class
declaration using the inline keyword (this syntax will be demonstrated in class).
5. Convert your calc.cpp program to use the fraction class.
--------------------------------------------
Here is my CODE
Expand|Select|Wrap|Line Numbers
- //fraction.h
- class fraction
- {
- private:
- int numerator;
- int denominator;
- public:
- fraction fraction::mult(fraction f1, fraction f2);
- fraction fraction::add(fraction f1, fraction f2);
- fraction fraction::sub(fraction f1, fraction f2);
- fraction fraction::div(fraction f1, fraction f2);
- void fraction::read(fraction* f);
- void fraction::print(fraction f10);
- int gcd (int u, int v);
- fraction() : fraction f1(0), fraction f2(1)
- {
- int gcd (int u, int v)
- {
- u = (u < 0) ? -u : u;
- v = (v < 0) ? -v : v;
- while (u > 0)
- {
- if (u < v)
- {
- int t = u;
- u = v;
- v = t;
- }
- u -= v;
- }
- }
- return v;
- };
- ////////////////
- //fraction.cpp
- #include <iostream>
- #include <string>
- #include "fraction.h"
- fraction fraction::mult(fraction f1, fraction f2)
- {
- fraction f10;
- int common;
- f10.numerator = (f1.numerator * f2.numerator);
- f10.denominator = (f1.denominator * f2.denominator);
- common = gcd(f10.numerator, f10.denominator);
- f10.numerator /= common;
- f10.denominator /= common;
- return f10;
- }
- fraction fraction::add(fraction f1, fraction f2)
- {
- fraction f10;
- int common;
- f10.numerator = (f1.numerator * f2.denominator + f1.denominator * f2.numerator);
- f10.denominator = (f1.denominator * f2.denominator);
- common = gcd(f10.numerator, f10.denominator);
- f10.numerator /= common;
- f10.denominator /= common;
- return f10;
- }
- fraction fraction::sub(fraction f1, fraction f2)
- {
- fraction f10;
- int common;
- f10.numerator = (f1.numerator * f2.denominator - f1.denominator * f2.numerator);
- f10.denominator = (f1.denominator * f2.denominator);
- common = gcd(f10.numerator, f10.denominator);
- f10.numerator /= common;
- f10.denominator /= common;
- return f10;
- }
- fraction fraction::div(fraction f1, fraction f2)
- {
- fraction f10;
- int common;
- f10.numerator = (f1.numerator * f2.denominator);
- f10.denominator = (f1.denominator * f2.numerator);
- common = gcd(f10.numerator, f10.denominator);
- f10.numerator /= common;
- f10.denominator /= common;
- return f10;
- }
- void read(fraction* f)
- {
- cout << "Enter your numerator: ";
- cin >> f->numerator;
- cout << "Enter your denominator: ";
- cin >> f->denominator;
- }
- void print(fraction f10)
- {
- cout << f10.numerator << "/" << f10.denominator << endl;
- }
- /////////////////
- //calc.cpp
- #include <iostream>
- #include <string>
- #include "fraction.h"
- int main()
- {
- fraction f1;
- fraction f2;
- fraction answer;
- fraction f10;
- char symbol = ' ';
- string nome;
- while (true)
- {
- cout << "A\tADD\n";
- cout << "S\tSUBTRACT\n";
- cout << "M\tMULTIPLY\n";
- cout << "D\tDIVIDE\n";
- cout << "E\tEXIT\n";
- cout << "What operation do you want to use?: ";
- cin >> symbol;
- if (symbol == 'e' || symbol == 'E')
- exit(0);
- switch (symbol)
- {
- case 'A':
- read(&f1);
- read(&f2);
- answer = add(f1, f2);
- print(answer);
- nome = "sum";
- break;
- case 'S':
- read(&f1);
- read(&f2);
- answer = sub(f1, f2);
- print(answer);
- nome= "difference";
- break;
- case 'M':
- read(&f1);
- read(&f2);
- answer = mult(f1, f2);
- print(answer);
- nome = "product";
- break;
- case 'D':
- read(&f1);
- read(&f2);
- answer = div(f1, f2);
- print(answer);
- nome = "quotient";
- break;
- }
- void print(fraction f10);
- }
- return 0;
- }
- //////////
c:\documentos\p rogramas\class fraction\class fraction\class fraction\calc.c pp(70) : fatal error C1075: end of file found before the left brace '{' at 'c:\documentos\ programas\
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.h(7) : see declaration of 'fraction::mult '
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.cpp(24) : error C2535: 'fraction fraction::add(f raction,fractio n)' : member function already defined or declared
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.h(8) : see declaration of 'fraction::add'
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.cpp(40) : error C2535: 'fraction fraction::sub(f raction,fractio n)' : member function already defined or declared
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.h(9) : see declaration of 'fraction::sub'
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.cpp(56) : error C2535: 'fraction fraction::div(f raction,fractio n)' : member function already defined or declared
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.h(10) : see declaration of 'fraction::div'
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.cpp(72) : error C2535: 'void fraction::read( fraction *)' : member function already defined or declared
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.h(11) : see declaration of 'fraction::read '
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.cpp(82) : error C2535: 'void fraction::print (fraction)' : member function already defined or declared
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.h(12) : see declaration of 'fraction::prin t'
c:\documentos\p rogramas\class fraction\class fraction\class fraction\fracti on.cpp(85) : fatal error C1075: end of file found before the left brace '{' at 'c:\documentos\ programas\class fraction\class fraction\class fraction\fracti on.h(2)' was matched
Thank you very much
Doug