Мальчики пожалуста помогите, оч трудно паскаль даётся, а учитель дал задание написать программу вычисления 100 верных знаков числа Пи. Как я ни старалась а у меня больше 14 знаков не выходит . У кого есть немножечко времени уделите пожалуста. Спасибочки заранее.
volvo
30.09.2006 23:10
Ошиблась разделом? Перенести в простые "Задачи", или ты именно на заказ? Тогда - какие сроки и сумма...
volvo
30.09.2006 23:31
В принципе, задача решена (работает до 54000 знаков после запятой, так что если нужно решение, и ты действительно не ошиблась разделом - пиши в приват, программа будет тебе выслана в течении 5 минут...)
volvo
1.10.2006 0:51
Тема перенесена в "Задачи"... Вот решение:
type PArrInt = ^ArrInt; ArrInt = Array[0 .. Pred(maxInt Div SizeOf(LongInt))] Of LongInt;
Function PiTest(szPi: PChar; Const nDigits: Integer): Boolean; Var i, c, f: LongInt; d, e, b, g, r: LongInt; a: PArrInt; szCurDigit: Integer;
_s: String; Begin PiTest := False;
If nDigits > 54900 Then Begin WriteLn('Error in PiTest(): n must be <= 54900'); Exit End;
szCurDigit := 0; d := 0; c := (nDigits div 4 + 1) * 14; GetMem(a, c * SizeOf(LongInt)); f := 10000;
For i := 0 To Pred( c ) Do a^[ i ] := 20000000;
Dec(c, 14); b := c; While b > 0 Do Begin
e := d mod f; d := e; Dec(b); While b > 0 Do Begin d := d * b + a^[ b ]; g := (b shl 1) - 1; a^[ b ] := (d mod g) * f; d := d div g; Dec(b) End;
r := e + d div f;
If r < 1000 Then Begin
If r > 99 Then Begin szPi[szCurDigit] := '0'; Inc(szCurDigit); End Else If r > 9 Then Begin szPi[szCurDigit] := '0'; Inc(szCurDigit); szPi[szCurDigit] := '0'; Inc(szCurDigit); End Else Begin szPi[szCurDigit] := '0'; Inc(szCurDigit); szPi[szCurDigit] := '0'; Inc(szCurDigit); szPi[szCurDigit] := '0'; Inc(szCurDigit); End; End;
2 volvo Нет ли ссылки с описанием этого алгоритма пошагово. Нам тоже задали эту задачу, но надо не только представить программу, но описать как она работает.
volvo
3.10.2006 2:28
Нет, во всяком случае у меня...
Эта процедура была выдрана мной из одного из BenchMark-ов несколько месяцев назад.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.