PDA

View Full Version : Programming Puzzle 3 - Fractions, anyone?


ABC123

Tom Cone Jr
06-05-2011, 02:26 PM
Puzzles and Problems

Beginning Xbasic Programming

Puzzle 3 - Fractions, anyone?

The "fraction monster" has taken over your machine. He's had it up to here
with loops, so no loops are allowed. Here's the puzzle, courtesy
of Creative Computing Magazine:

Mrs. Canton wanted to buy all the grocer's apples for a church picnic.
When she asked how many apples the store had, the grocer replied:
"If you added 1/4, 1/5, and 1/6 of them, that would make 37. After
giving the grocer a look that would melt steel, Mrs. Canton pulled
out her new netbook computer and figured it out. Can you? How
many apples were in the store?

Instructions:

Most of us with a pencil and paper (and a big eraser!) could figure this
out by hand (eventually). Your instructions however are these:

Write an xbasic script that solves the puzzle and then display both
your solution and its "proof", in a single message box. Your
"proof" will be accepted if we can see how much 1/4, 1/5 and 1/6
of your answer are, and that their sum is 37.

Tip: This will involve writing a multi-line string to your
message box.

Have fun!

ps. For bonus points write your solution and its "proof" to the
trace window. Don't know about the trace window yet? It's
time to learn. The trace window is your friend.

Peter.Wayne
06-05-2011, 06:09 PM
' (1/4)*x plus (1/5)*x plus (1/6)*x =37
' multiply by a common denominator, not necessarily lowest common denominator
denom=4*5*6
' 37*denom=denom*(1/4)*x+denom*(1/5)*x+denom*(1/6)*x
' then sum the Xs and divide into 37*denom
y=(denom/4)+(denom/5)+(denom/6)
result=37*denom/y
onequarter=result/4
onefifth=result/5
onesixth=result/6
sumAll=onequarter+onefifth+onesixth
proof="1/4 of total is "+onequarter+crlf()+\
"1/5 of total is "+onefifth+crlf()+\
"1/6 of total is "+onesixth+crlf()+\
"Which adds up to "+sumAll
ui_msg_box(result+" apples",proof)

Tom Cone Jr
06-05-2011, 06:51 PM
Very good!

Six months from now I wonder if the line that reads:

result = 37*denom/ymight benefit from an explanatory comment (even though the flow of the program is described nicely beforehand.) ??

Peter.Greulich
06-05-2011, 06:59 PM
X = 37/((1/4)+(1/5)+(1/6))
trace.WriteLn("apples in store = " + alltrim(str(x)))
n = (1/4)*x+(1/5)*x+(1/6)*x
trace.WriteLn("Proof = " + alltrim(str(n)))
ui_msg_box("Apples", x + " apples in store" + crlf(2) + "Proof = " + n)

Tom Cone Jr
06-05-2011, 08:01 PM
Peter G. - Good work! You taught me something. I did not know that we could add fractions without reducing them to common denominators first. Sweet!

Thanks.

jeb richardson
08-04-2011, 11:43 AM
Here's my attempt for puzzle 3-fractions.
28968
Tom, thanks for the suggestion at the end of puzzle two. I have explored exporting scripts and importing them back.

RobPolley
11-07-2011, 09:16 PM
Tom,

I've been working to learn xbasic (my first attempt at ANY programming). When you first posted these problems, they were WAY beyond my ability; now they are an appropriate challenge - thanks for posting them. Here's my reply to #3. I know the msg box isn't quite right.

'How many apples do I have if
'1/4 of them + 1/5 of them + 1/6 of them = 37

dim Tot as n
dim qtr as n
dim fifth as n
dim sixth as n
dim partial as n

qtr=1/4
fifth=1/5
sixth=1/6

partial = qtr + fifth + sixth

'(qtr*Tot)+(fifth*Tot)+(sixth*Tot)= 37

'partial*Tot=37

Tot=37/partial

ui_msg_box("Answers","The total apples at the store are:"+" "+str(Tot))

end

Tom Cone Jr
11-08-2011, 05:40 AM
Rob, I'm glad you're enjoying the puzzles.

Check the help system for information on

STR Function
LTRIM Function

To discover why Ltrim(Str(Tot)) improves your formatting in the msg box.

-- tom