Connecting Tech Pros Worldwide Help | Site Map

Currency Conversion using OO

Willing 2 Learn
Guest
 
Posts: n/a
#1: Oct 12 '05
I'm still having trouble getting my program to do arithmetic in
cents(keeping all #'s) then convert the answer in a format of dollars &
cents. The main program should add, subtract, scalar multiply(by int)&
show, have a constructor w/ & w/out arguments. Header file should have
private data & all 6 functions from above.Class definition file should
implement my ADT class.
What I have so far:
Main program
#include "jahcurrency.h"
#include <iostream.h>
void main()
{
Currency a(4,3);
Currency b(2,1);
Currency total;

total=a.add(b);
total.show();
total=a.sub(b);
total.show();
total=a.multiply(5);
total.show();
}
Header file
class Currency
{
private:
double cents;
public:
Currency();
Currency(int d,int c);
Currency add(Currency b);
Currency sub(Currency b);
Currency multiply(double d);
double calc(Currency s);
double calc2(Currency f);
void show(void);
};
Class definition
#include "jahcurrency.h"
#include <iomanip.h>
#include <math.h>
#include <iostream.h>

char sign='$';


Currency::Currency()
{
x=0;

}
Currency::calc2(Currency f)
{

f=(x*100)-(x%100);

return f;
}
Currency::calc(Currency s)
{

s=(x%100);

return s;

}
Currency::Currency(int d, int c)
{

d=(x*100)-(x%100);
c=(x%100);

return d;

}


Currency::add(Currency b)
{
Currency x;
x.cents= x+ b.x;

return x;
}
Currency::sub(Currency b)
{
Currency x;
x.cents= x- b.x;

return x;
}
Currency::multiply(Currency d)
{
Currency x;
x.cents= x*d.x;

return x;
}


Currency::show()
{
cout<<sign<<d<<". "<<s<<endl;
}
How different would the program be if cents is in long then convert
ans. for each opeartion to dollars & cents ?
Your help would be appreciated in how to fix this problem.

osmium
Guest
 
Posts: n/a
#2: Oct 12 '05

re: Currency Conversion using OO


"Willing 2 Learn" writes:
[color=blue]
> I'm still having trouble getting my program to do arithmetic in
> cents(keeping all #'s) then convert the answer in a format of dollars &
> cents. The main program should add, subtract, scalar multiply(by int)&
> show, have a constructor w/ & w/out arguments. Header file should have
> private data & all 6 functions from above.Class definition file should
> implement my ADT class.
> What I have so far:
> Main program
> #include "jahcurrency.h"
> #include <iostream.h>
> void main()
> {
> Currency a(4,3);
> Currency b(2,1);
> Currency total;
>
> total=a.add(b);
> total.show();
> total=a.sub(b);
> total.show();
> total=a.multiply(5);
> total.show();
> }
> Header file
> class Currency
> {
> private:
> double cents;[/color]

Fatal flaw. Even if you get it to work it will not be usable. People are
very fussy about money and they want totals to add up to 100.0%. A double
is only an *approximation* of a real number.

Also, Currency is a bad name for the class. You have gone to great pains to
handle coins. In common usage currency is paper money. How about "Money"
as a name?

<anip>


Bob Hairgrove
Guest
 
Posts: n/a
#3: Oct 12 '05

re: Currency Conversion using OO


On 12 Oct 2005 08:01:29 -0700, "Willing 2 Learn"
<janetjoyann100@yahoo.com> wrote:
[color=blue]
>I'm still having trouble getting my program to do arithmetic in
>cents(keeping all #'s) then convert the answer in a format of dollars &
>cents. The main program should add, subtract, scalar multiply(by int)&
>show, have a constructor w/ & w/out arguments. Header file should have
>private data & all 6 functions from above.Class definition file should
>implement my ADT class.
> What I have so far:
>Main program
>#include "jahcurrency.h"
>#include <iostream.h>[/color]

#include <iostream> /* WITHOUT the H */

Including STL headers with .h ending is deprecated and can lead to
many problems.
[color=blue]
>void main()[/color]

int main()

The C++ standard requires that main() return int.
[color=blue]
>{
> Currency a(4,3);
> Currency b(2,1);
> Currency total;
>
> total=a.add(b);
> total.show();
> total=a.sub(b);
> total.show();
> total=a.multiply(5);
> total.show();
>}
>Header file
>class Currency
>{
> private:
> double cents;
> public:
> Currency();
> Currency(int d,int c);
> Currency add(Currency b);[/color]
Should be:
Currency add(Currency b) const;
Do you know why? You need to know...
[color=blue]
> Currency sub(Currency b);
> Currency multiply(double d);
> double calc(Currency s);
> double calc2(Currency f);
> void show(void);[/color]

void show() const;
[color=blue]
>};
>Class definition
>#include "jahcurrency.h"
>#include <iomanip.h>
>#include <math.h>
>#include <iostream.h>[/color]
[color=blue]
>#include <iomanip>
>#include <iostream>[/color]

You could include <cmath> but then the names would have to be in
namespace std.
[color=blue]
>
>char sign='$';
>
>
>Currency::Currency()
>{
> x=0;[/color]

Where is x declared? What about your member variable cents??
[color=blue]
>
>}
>Currency::calc2(Currency f)
>{
>
> f=(x*100)-(x%100);
>
>return f;
>}
>Currency::calc(Currency s)
>{
>
> s=(x%100);
>
>return s;
>
>}
>Currency::Currency(int d, int c)
>{
>
> d=(x*100)-(x%100);
> c=(x%100);
>
>return d;[/color]

???
You can't return anything from a constructor.
And you throw away the second calculation, so what good is it?
[color=blue]
>}
>
>
>Currency::add(Currency b)[/color]

Should be:
Currency Currency::add(Currency b) const[color=blue]
>{
> Currency x;
> x.cents= x+ b.x;
>
> return x;
>}
>Currency::sub(Currency b)[/color]

Same as above...
[color=blue]
>{
> Currency x;
> x.cents= x- b.x;
>
> return x;
>}
>Currency::multiply(Currency d)
>{
> Currency x;
> x.cents= x*d.x;
>
> return x;
>}
>
>
>Currency::show()
>{
> cout<<sign<<d<<". "<<s<<endl;
>}
>How different would the program be if cents is in long then convert
>ans. for each opeartion to dollars & cents ?
>Your help would be appreciated in how to fix this problem.[/color]

Did you try to compile this before posting?
I didn't think so...

--
Bob Hairgrove
NoSpamPlease@Home.com
Closed Thread


Similar C / C++ bytes