Страница 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
Берешь в разделе описания переменных меняешь
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
" писал(а):всё равно косячит по-чёрному...((
Настройки компилятора здесь напиши
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