帕斯卡小数点

时间:2013-11-09 21:57:53

标签: pascal division decimal-point

你可以帮我完成我的作业吗?我只是一个初学者,对Pascal知之甚少:(

我应该为分区编写一个程序,但根据它们的十进制数有特殊条件。输出应该如下所示:

  1. 没有小数,那么20/5 = 4(只能有4;它不能像4.00)

  2. 如果小数则只有1个十进制数9/4 = 2.3

  3. 如果小数是无穷大的相同数,那么1/3 = 0.(3)

  4. 我该怎么办?我正在考虑将它放入一个数组,但我不知道如何找到小数点的位置,也不知道如何将括号写入输出。

2 个答案:

答案 0 :(得分:2)

我无法解决第3点,但这里是第2点的代码:

Var
   x,y : integer;
   z : real;
Begin
     z := x / y;
     if z = x div y
        then Write(z:4:0) //Write a real var without any decimals
        else Write(z:4:1); //Write a real var with just 1 decimal
End.

你必须改变一些东西,比如阅读x和y,但是从这段代码中你几乎可以做你的作业。

我会尝试第三次解决,一段时间后再次检查答案。

答案 1 :(得分:0)

要解决第3点:将x和y视为一个分数。这是基本的想法:

  1. A:= A / GCD(A,B); B:= B / GCD(A,B)
  2. 整数部分:= div B;答:= A mod B
  3. 非周期性部分:当A mod 2 = 0时,BEGIN C:= C * 2; A:= A div 2;结束; A mod 5 = 0 do BEGIN C:= C * 5; A:= A div 5; END
  4. 找到M,使A * M = 999..999。