-1

私の宿題を手伝ってくれませんか?私は初心者で、パスカルについてほとんど知りません:(

除算のプログラムを書くことになっていますが、10 進数に応じて特別な条件があります。出力は次のようになります。

  1. 小数がない場合は 20/5=4 (4 しかありません。4.00 のようにはなりません)

  2. 小数の場合、小数は 1 つだけ 9/4=2.3

  3. 小数が同じ数の無限大の場合、1/3=0.(3)

どうすればいいですか?配列に入れることを考えていましたが、小数点がどこにあるかを見つける方法も、ブラケットを出力に書き込む方法もわかりません。

4

2 に答える 2

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 を読み取るなど、さまざまなことを変更する必要がありますが、このコードから宿題をほとんど行うことができます。

3回目の解決を試みます。しばらくしてからもう一度答えを確認してください。

于 2013-11-10T14:14:14.503 に答える
0

3 番目のポイントを解決するには、x と y を分数として考えます。基本的な考え方は次のとおりです。

  1. A:=A/GCD(A,B);B:=B/GCD(A,B)
  2. 整数部 := A div B; A:=A mod B
  3. 非周期部分: while A mod 2=0 do BEGIN C:=C*2;A:=A div 2; 終わり; while A mod 5=0 do BEGIN C:=C*5;A:=A div 5; 終わり
  4. A*M=999..999 となる M を見つけます。
于 2013-11-13T10:24:25.107 に答える