Pascal: How to use floor function in Pascal?

  • Thread starter Thread starter Arian.D
  • Start date Start date
  • Tags Tags
    Function Pascal
AI Thread Summary
Turbo Pascal does not have a built-in floor function in its math library, which can lead to issues when trying to use it. Users can define their own floor function using integer division and the real functions int and frac, ensuring to handle negative numbers correctly. The discussion also highlights a challenge when converting a real number to an integer, as the mod operator requires both operands to be integers. A user is developing a program to convert real numbers to various bases and initially struggled with storing a real number in an integer variable. They discovered that the trunc function can be used to address this issue, effectively converting the real number to an integer. Overall, the conversation emphasizes the need for custom implementations of mathematical functions in older Pascal versions and the importance of understanding data type conversions.
Arian.D
Messages
101
Reaction score
0
Hi,

I need to use floor function to write a program in Pascal, does pascal have it as a procedure/function in its library?

My compiler is Turbo Pascal for windows version 1.5, so it might be outdated. Somewhere on the internet I read that if I write 'uses math;' then I could use math functions that are in pascal's library, I did that but when I write floor or ceil the answer I get is 'Uknown identifier'.

Can I write the floor function in Pascal on my own or that would be too hard?

What should I do?

P.S: I'm a math major and I don't know much about programming like a CS student, I just need to write a bunch of programs in Pascal for my numerical analysis class.
 
Technology news on Phys.org
Arian.D said:
Hi,

I need to use floor function to write a program in Pascal, does pascal have it as a procedure/function in its library?

My compiler is Turbo Pascal for windows version 1.5, so it might be outdated. Somewhere on the internet I read that if I write 'uses math;' then I could use math functions that are in pascal's library, I did that but when I write floor or ceil the answer I get is 'Uknown identifier'.

Can I write the floor function in Pascal on my own or that would be too hard?

What should I do?

P.S: I'm a math major and I don't know much about programming like a CS student, I just need to write a bunch of programs in Pascal for my numerical analysis class.

I don't know whether TPW has floor in its math library, but you can write your own. Pascal has integer division (div) and the real functions int and frac, which should be sufficient (remembering to deal with negative numbers appropriately). Ditto for ceil.
 
Thanks. I programmed the floor function, that's solved.
Now at some point of the programming, it seems that I have no choice but to assign the value of a real variable to an integer variable. the operator x mod y works only when both x and y are integers, but the answer that my function floor() returns is a real number, and that's causing troubles for me.

Let me tell you what I'm trying to do. I'm writing a program that takes a real number as input and then converts it to any given base (2-9).

This is what I've done so far:

Program base_change;
uses wincrt;

Type no = array[1..50] of integer;


Var base:integer;
dig:integer;
x:real;
Var numb1:no;
numb2:no;

function floor (y:real): real;
Var m:real;

Begin

if y < 0 then
m := int(y) - 1
else
m := int(y);

floor := m;
End;

Procedure intconv(base:integer ; x:real);
Var n:integer;
number:real;
Begin
number := floor(x);
n:=1;
Repeat
Numb1[n] := (number mod base);
number:= (number div base);
n := n+1;

Until (number = 0);

for i := n-1 downto 1 do
write(Numb1);

End;

Begin
Write('Choose the base: ');
readln(base);
Write('Enter a real number to be converted into base',base,':');
readln(x);
intconv(base, x);
End.


I guess my general idea is correct. When I'm given a real number, first I convert the integer part using the procedure intconv, then I convert the fraction part using another procedure that I'll right after it. But my main problem for now is: How could I save the value of x (a real type data) in number(an integer type data)?
Is there anyways to do that?
Thanks in advance.
 
I guess I found the answer by myself, the function trunc would do the trick.
 
Standard Pascal doesn't include a floor function.
 
Thread 'Is this public key encryption?'
I've tried to intuit public key encryption but never quite managed. But this seems to wrap it up in a bow. This seems to be a very elegant way of transmitting a message publicly that only the sender and receiver can decipher. Is this how PKE works? No, it cant be. In the above case, the requester knows the target's "secret" key - because they have his ID, and therefore knows his birthdate.
I tried a web search "the loss of programming ", and found an article saying that all aspects of writing, developing, and testing software programs will one day all be handled through artificial intelligence. One must wonder then, who is responsible. WHO is responsible for any problems, bugs, deficiencies, or whatever malfunctions which the programs make their users endure? Things may work wrong however the "wrong" happens. AI needs to fix the problems for the users. Any way to...
Back
Top