is there a reason why to make mix numbers improper when adding?

S

sp0

Is there a reason why to make mix numbers improper when adding?

It seems when subtracting and adding, adding a subtracting the whole
numbers and fraction parts should be sufficient? what'ch think
 
M

Mike Wahler

sp0 said:
Is there a reason why to make mix numbers improper when adding?

It seems when subtracting and adding, adding a subtracting the whole
numbers and fraction parts should be sufficient? what'ch think

Please give a specific code example of what you mean.
I don't understand your questions.

-Mike
 
S

sp0

Please give a specific code example of what you mean.
I don't understand your questions.


temp.whole = whole - obj2.whole;
temp.numer = ((whole * denom + numer)*obj2.denom) - ((obj2.whole *
obj2.denom + obj2.numer)*denom);

temp.denom = denom * obj2.denom;

temp.reduce();



subtracting the wholes instead of making both fractions improper
 
M

Mike Wahler

sp0 said:
temp.whole = whole - obj2.whole;
temp.numer = ((whole * denom + numer)*obj2.denom) - ((obj2.whole *
obj2.denom + obj2.numer)*denom);

temp.denom = denom * obj2.denom;

temp.reduce();



subtracting the wholes instead of making both fractions improper

So what other method would you propose? Does it produce
correct results?

-Mike
 
V

Virgil

sp0 said:
Is there a reason why to make mix numbers improper when adding?

It seems when subtracting and adding, adding a subtracting the whole
numbers and fraction parts should be sufficient? what'ch think

It need not be done that way, but when multiplying or dividing mixed
numbers it is much easier to do in improper fraction form.
 
W

William Elliot

Is there a reason why to make mix numbers improper when adding?

It seems when subtracting and adding, adding a subtracting the whole
numbers and fraction parts should be sufficient? what'ch think
75/7 * 77/5
 
J

John Harrison

sp0 said:
temp.whole = whole - obj2.whole;
temp.numer = ((whole * denom + numer)*obj2.denom) - ((obj2.whole *
obj2.denom + obj2.numer)*denom);

temp.denom = denom * obj2.denom;

temp.reduce();



subtracting the wholes instead of making both fractions improper

You will get help on this group, if you post compilable code, say what you
expect the code to produce, and what it produces instead.

At the moment no-one has very much idea what your problem is.

This is covered in the FAQ, 'How to I post a question about code that
doesn't work correctly?'

http://www.parashift.com/c++-faq-lite/how-to-post.html#faq-5.8

john
 
K

Ken Pledger

sp0 said:
....
It seems when subtracting and adding, adding a subtracting the whole
numbers and fraction parts should be sufficient? what'ch think


That's how I was taught to do it in primary school long ago.

Ken Pledger.
 
B

Buster

sp0 said:
Is there a reason why to make mix numbers improper when adding?

Is there a reason to store a fraction as a whole number and a fractional
part? Doesn't it lead to a lot of unnecessary complications (like this
one) in your code?
It seems when subtracting and adding, adding a subtracting the whole
numbers and fraction parts should be sufficient? what'ch think

Adding or subtracting the fractional parts will be formally exactly the
same as adding or subtracting two improper fractions. All a mixed
representation does is add complexity.

I suggest you store rationals as numerator-denominator and produce
mixed-fraction representations only as required. Or let the user produce
them herself. She has access to the (coprime) numerator and denominator
and can calculate the quotient and remainder from them, right?

Regards,
Buster.
 
J

juuitchan

Buster said:
Is there a reason to store a fraction as a whole number and a fractional
part? Doesn't it lead to a lot of unnecessary complications (like this
one) in your code?


Adding or subtracting the fractional parts will be formally exactly the
same as adding or subtracting two improper fractions. All a mixed
representation does is add complexity.

I suggest you store rationals as numerator-denominator and produce
mixed-fraction representations only as required. Or let the user produce
them herself. She has access to the (coprime) numerator and denominator
and can calculate the quotient and remainder from them, right?

Why not also leave numbers in binary or hexadecimal form for her?
Can't she convert them to decimal herself?

The needs of the machine and the needs of the human are different.
Have the machine use whatever format is most efficient for its own
work, and have it perhaps convert to another format to show the human.
Why on earth would she care how the computer stores the numbers, as
long as the answers come out right? Do you care what makes the sun
shine, or is it enough to know that it shines and will almost
certainly continue to shine for billions of years?
 
B

Buster

Why not also leave numbers in binary or hexadecimal form for her?
Can't she convert them to decimal herself?

It goes without saying that the numbers will be returned in binary form
in the scheme I have described. Are you suggesting that the value of
"a+b" (where a and b are rationals) should be a string? By all means
provide utility functions to create string representations in whatever
format you like, but they won't be used until after the users have
finished their calculations, and those calculations will in general be
simpler to program if you use the simpler numerator-denominator
representation.
The needs of the machine and the needs of the human are different.

Not in any essential way, when it comes to calculating with integers.
Have the machine use whatever format is most efficient for its own
work, and have it perhaps convert to another format to show the human.

What's your point? What's wrong with the numerator-denominator format?
That's how I prefer to write fractions when calculating on paper, the
reasons being essentially the same as the reasons that I would use that
format internally in a rational number class.
Why on earth would she care how the computer stores the numbers, as
long as the answers come out right?

The concept of a rational number is defined in terms of a numerator and
denominator. It really is, honest. A rational number is an equivalence
class of ordered pairs (a, b) where a and b are integers, b is nonzero
and (a, b) is defined to be equivalent to (c, d) if and only a*d == b*c.
Anyone who provides me with a rational number class had better assume
I'm going to be interested in obtaining a numerator and denominator from
an instance.

Given two rational number classes I would try, /ceteris paribus/, to
choose the more efficient. If this were independent of the internal
representation then fine, but it isn't.
Do you care what makes the sun
shine, or is it enough to know that it shines and will almost
certainly continue to shine for billions of years?

Sure I care what makes the sun shine. Where's your childlike wonder? If
everyone thought like that we'd all still be in dark ages.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,904
Latest member
HealthyVisionsCBDPrice

Latest Threads

Top