Страница 2 из 3

Re: тяжёлая математическая задача

Добавлено: 11 окт 2007, 12:30
somebody_now
tm2007, исчерпывающе)
вот и выходит что вчера в назначенный час x на бумажке посчитал всё сразу а вот с программой вышел облом(
теперь по тексту второй проги:
что наз-ся прокрутил всё это через себя, результат должен совпадать с результатом первой, НО: паскаль выдаёт несколько runtime error'ов (причём выдавал...теперь уже без них - немерено раз жму ентер и жду звукового сигнала об этом самом рантайме). при повторной компиляции вижу результат предыдущей =
1.0961708567E+01,что никак не соответствует действительности и результату первой...

Re: тяжёлая математическая задача

Добавлено: 11 окт 2007, 12:43
somewhere
somebody_now, все там работает, и результат 2.333. Ищите косяки в настройках компилятора паскаля, никаких рантаймов там нет. Ответ 1.0961708567E+01 в принципе не может быть, т.к. стоит форматирование S:3:3

Re: тяжёлая математическая задача

Добавлено: 11 окт 2007, 13:11
somebody_now
somewhere, когда увидел что он фигачит единицу с лишним, спец. убрал форматирование чтоб взглянуть на этот ответ целиком.. а в компиляторе..там настроек-то штук10 по рантаймам - всего 4 и те - показать/не показать сведения о них..
чётко доходит до просчёта 1го цикла, а конкретно до строчки 'R:=R*2*I;'
прерывается и выдаёт
Runtime error 215 at 0000:00A5..

Re: тяжёлая математическая задача

Добавлено: 11 окт 2007, 13:21
somewhere
Берешь в разделе описания переменных меняешь

Код: Выделить всё

var
........ B : Longint;

на

B : Extended;
27! в третьем проходе число слижком большое, чтобы уместится в 0..2^32. Посему программа ошибочна и делает неверный расчет, однако в третьем проходе a(3) настолько мало, что на результат не влияет.

Re: тяжёлая математическая задача

Добавлено: 11 окт 2007, 19:27
somebody_now
всё равно косячит по-чёрному...((
ну да неважно, текст то есть; вот только последняя опция безжалостно забыта: нужен последний член ряда..это видимо an и я так понимаю равен 0.333...если ошибаюсь поправьте)) да и нужен скрин экрана вычислений, а если он выдаёт 1 с лишним и вообще нормально не грузится, то откуда его взять?!

Re: тяжёлая математическая задача

Добавлено: 11 окт 2007, 21:15
tm2007
Поменяйте тип не только у B, но у всех переменных, ранее объявленных как Real.

Код: Выделить всё

var
 N, R, Z, I: LongInt;
 B, An, S, E: Extended;

Последний найденный член ряда должен быть меньше 0,001 :)
Если хотите, чтобы выводились на экран значения членов ряда, то введите такую строку после строки, в которой вычисляется An:

Код: Выделить всё

......
An:=R/B; 
writeln('A', N, '=', An:3:4);
......
27! - это очень большое число.

Re: тяжёлая математическая задача

Добавлено: 12 окт 2007, 10:43
somewhere
&quot писал(а):всё равно косячит по-чёрному...((
Настройки компилятора здесь напиши

Re: тяжёлая математическая задача

Добавлено: 12 окт 2007, 18:36
somebody_now
Code generation:
[] Force for calls
[] Overlays allowed
[X] Word align data
[] 286 instructions
Runtime errors:
[] Range checking
[X] Stack checking
[X] I/O checking
[] Overflow checking
Debugging:
[X] Debug information
[X] Local Symbols
Syntax options:
[X] Strict var-strings
[] Complete boolean eval
[X] Extended syntax
[] Typed @ operator
[] Open parameters
Numeric processing:
[] 8087/80287
[X] Emulation
всё вроде...

Re: тяжёлая математическая задача

Добавлено: 14 окт 2007, 19:03
Serge_Bliznykov
похоже, что настройки тут не при чём... ещё раз, попробуйте создать новый файл DDPROJ1.PAS,
вставить туда нижеприведённый код и выполнить..

Код: Выделить всё

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+}
{$M 16384,0,655360}
program ddProj1;

var
 An, S, E: Real;
 N, R, Z, B, I: LongInt;

begin
 E:=0.001;
 N:=1;
 S:=0;
 repeat
   R:=1;
  for I:=1 to N do
   R:=R*2*I;
   Z:=1;
   for I:=1 to N do
   Z:=Z*N;
  B:=1;
   for I:=1 to Z do
    B:=B*I;
  An:=R/B; 
  S:=S+An; 
  N:=N+1;
 until An<E;
 writeln('Summa ryada S=', S:3:3);
 writeln('Kol-vo iteratsii: ', N-1);
 readln;
end.
TurboPascal 7.0 (впрочем и на Delphi 5.0)
у меня эта программа выдаёт:
C:\TP\PAS>DDPROJ1.EXE
Summa ryada S=2.333
Kol-vo iteratsii: 3

Re: тяжёлая математическая задача

Добавлено: 15 окт 2007, 13:38
somewhere
Попробуй включить 80287 Numeric processing и 80286 Instructions