Computer Science Canada HELP ON TURING- PERFECT SQUARE

 Author: dinktsr [ Mon Apr 26, 2004 5:05 pm ] Post subject: HELP ON TURING- PERFECT SQUARE i struggle so much at this it's not even funny... i need a program that keep inputting integers until a perfect square (ex. 81, 9) between 40 and 100 PLEASE HELP ME, WITHOUT THIS IM DEAD, THANKS IN ADVANCE

Author:  Tony [ Mon Apr 26, 2004 5:08 pm ]
Post subject:

eh? what seems to be the problem?
 code: var num:int loop put "what number?" get num exit when round(sqrt(num))**2 = num end loop put "the end"

Author:  Paul [ Mon Apr 26, 2004 5:17 pm ]
Post subject:

wha...?
here's how I would do it, it might be sucky, but i always like to showoff my newly learned knowledge (strintok)
 code: for a: 40..100 if strintok (realstr(sqrt (a),0))then put a exit else put a, " ".. end if end for

 Author: Tony [ Mon Apr 26, 2004 5:18 pm ] Post subject: hah, while we at it, might also use if sqrt(num) mod 1 = 0 to test for a perfect square

Author:  Cervantes [ Mon Apr 26, 2004 5:29 pm ]
Post subject:

jeeze, thats the way i did it. I made the prog but then just as i was about to post my "do your own homework" rant followed by "this is how in english, not in code", I scroll down and there's tony's very blatant answer staring at me.

anywho, I don't understand this bit.
 code: exit when round(sqrt(num))**2 = num

if you take the sqrt of a perfect square and you get an integer. round it and you get an integer. square it and you get the first number
but take the sqrt of a non-perfect square number and you get a num with decimals, round that and you get an integer, square that and you get the number you started with, yes? but obviously if you input 10 into your prog it doesn't exit, but if you input 9 it does.

 Author: Tony [ Mon Apr 26, 2004 5:38 pm ] Post subject: Cervantes - since round drops the decimal point, when you square the number it will not be the same as the one you squared. It is basically a test to see if the squareroot of a number is an integer (perfect square) or not. That's why I later posted with mod 1 method, as non integer root will have a .something remainder. 10 (non perfect square) sqrt = 3.16 round(3.16) = 3 3 * 3 = 9 9 != 10

 Author: Cervantes [ Mon Apr 26, 2004 5:49 pm ] Post subject: i have an incredibly strong urge to edit my above post and erase all my moronic ramblings

 :