06.02.2010, 22:04 | #11 (permalink) |
一步一步地会到目的
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
|
|
06.02.2010, 22:04 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Я думаю, что было бы очень полезно почитать аналогичные обсуждения Надеюсь на подсказку |
20.02.2010, 00:37 | #12 (permalink) |
Member
Регистрация: 24.01.2010
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 26
|
Попробовал вот тоже решить вторую задачу. Только с помощью функции. Но выдает ошибку Floating point overflow. Господа, можете ткнуть пальцем где у меня ошибка ? Уж, не могу сам дойти.
Код:
program funckcija; uses crt; var x:real; function func(xs:real):real; begin func:=x*sqr(x)-sqr(x)+16*x-43; end; begin clrscr; x:=-4; repeat x:=x+0.5*x; writeln(func(x):8:2); until x=4; readln end. |
20.02.2010, 02:15 | #15 (permalink) |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
x:=x+0.5*x;
-зачем умножать? написано же, с шагом 0.5: x:=x+0.5; И да, смените Real на Double. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
20.02.2010, 10:33 | #16 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Это я как-то не очень понимаю - зачем бы? Вроде нигде там особо больших чисел не образуется. У меня, например, проходит без проблем так:
Код:
program funckcija; uses crt; var x:real; function func(xs:real):real; begin func:=xs*sqr(xs)-sqr(xs)+16*xs-43; end; begin clrscr; x:=-4; repeat x:=x+0.5; writeln(x:4:1,func(x):10:2); until x=4; readln end. Код:
var i:integer; begin For i:=-8 to 8 do WriteLn(0.5*i:4:1, (0.125*i*i*i-0.25*i+8*i-43):10:2); readln; end. |
20.02.2010, 10:37 | #17 (permalink) | |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
Как я понял, там требуется сосчитать 6 знаков после запятой, а у real точность 5 знаков. Запас по арифметической точности должен быть не менее 5 знаков.
Вообще, при математических расчетах, применять real нужно с осторожностью - точность низкая. вот тут будут проблемы: Цитата:
умножение числа с плавающей запятой на целое может создать огромные проблемы новичкам при отладке. Последний раз редактировалось Long Cat; 20.02.2010 в 10:40 |
|
20.02.2010, 11:11 | #18 (permalink) | ||
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Не согласен ни с одним пунктом.
Где Вы это взяли? Еще раз пересмотрел всю ветку - не нашел. А у MrStep'a и Linka и вовсе поставлен формат с двумя знаками. Цитата:
Диапазон: -2.9е-39..1.7е38 Количество значащих цифр: 11-12 Количество байтов: 6 И это в очень старой версии Турбо-Паскаля. И куда тут большая точность? Цитата:
|
||
20.02.2010, 11:34 | #19 (permalink) |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
Сложите в два числа типа real
1000000 и 0.01; теперь аналогично сложите два числа типа double. Проблема в том, например, что вы знаете, что нужно избегать конструкций вида b=i*a, где а и b - вещественные, i - целое, а те, кто будет писать свой код на основе этого - не знают. |
20.02.2010, 11:55 | #20 (permalink) | ||
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Цитата:
P.S. А вообще - не IMHO не стОит особенно сокрушаться, что у новичков возникнут такого рода проблемы. Если сумеет их локализовать и преодолеть - то программист и получится! |
||
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|