
-----------------------------------
dinktsr
Mon Apr 26, 2004 5:05 pm

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

-----------------------------------
Tony
Mon Apr 26, 2004 5:08 pm


-----------------------------------
eh? :? what seems to be the problem? :lol: 

var num:int
loop
put "what number?"
get num
exit when round(sqrt(num))**2 = num
end loop
put "the end"


-----------------------------------
Paul
Mon Apr 26, 2004 5:17 pm


-----------------------------------
wha...?
here's how I would do it, it might be sucky, but i always like to showoff my newly learned knowledge (strintok) :P

for a: 40..100
if strintok (realstr(sqrt (a),0))then
put a 
exit
else
put a, " "..
end if
end for


-----------------------------------
Tony
Mon Apr 26, 2004 5:18 pm


-----------------------------------
hah, while we at it, might also use if sqrt(num) mod 1 = 0 to test for a perfect square :lol:

-----------------------------------
Cervantes
Mon Apr 26, 2004 5:29 pm


-----------------------------------
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.
 :x 

anywho, I don't understand this bit.

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.   :?

-----------------------------------
Tony
Mon Apr 26, 2004 5:38 pm


-----------------------------------
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

 :wink:

-----------------------------------
Cervantes
Mon Apr 26, 2004 5:49 pm


-----------------------------------
i have an incredibly strong urge to edit my above post and erase all my moronic ramblings  :oops:
