Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2009, 07:43   #11
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Видимо, в особенностях работы плавающей точки.

n:=(exp(n*ln(2))); — это ненадёжный способ вычисления степени, когда нужно целое число. Хоть бы Round его, что ли.

UPD: Степень двойки можно вычислять как 1 shl power
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/

Последний раз редактировалось OCTAGRAM; 26.03.2009 в 07:46.
OCTAGRAM вне форума Ответить с цитированием
Старый 26.03.2009, 08:07   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Видимо, в особенностях работы плавающей точки.
Нет это глюк самого Скулпака. У меня такое было, я тогда просто паскаль другой достал
Цитата:
это ненадёжный способ вычисления степени, когда нужно целое число
.
Че так?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.03.2009, 08:13   #13
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нет это глюк самого Скулпака.
Нет, это глюк программиста. Я как программист, недоволен этим кодом. И будь я преподом, я бы докопался, и тот факт, что в NTVDM всё работает, не спас бы.

Четвёрка на разных CPU&RTL округляется чуть влево или чуть вправо. В данном случае это как раз хорошо видно. Если посмотреть, как составлена программа, то мелкая особенность CPU становится определяющей. Нельзя так программы писать. Плавающая точка — она и есть плавающая.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/

Последний раз редактировалось OCTAGRAM; 26.03.2009 в 08:18.
OCTAGRAM вне форума Ответить с цитированием
Старый 26.03.2009, 08:28   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
И будь я преподом, я бы докопался
Ну и здря. Нормальный код (тем паче для студента), я его проверил на своем ТР71 выдает 24, как и положенно.

Хотя конечно Борландовцы перестраховавшись всетки доработали это выражение в функции Power в Делфи.

P.S. Кста автор может попробовать включить эмуляцию 8087 на совем паскале.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.03.2009, 08:45   #15
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну и здря. Нормальный код (тем паче для студента)
Неа. Не нормальный.

Код:
n:=(exp(n*ln(2)));
while k<n do
{...}
ln(2) считает с погрешностью, n * ln(2) считает с погрешностью, exp(n * ln(2)) считает с погрешностью. И Бог с ней, с погрешностью, но ведь следующий оператор «while k<n do» явно испытывает судьбу.

При желании можно найти обратный вариант, где в School Pak будет работать, а в NTVDM — нет. Вот, например, чтобы далеко не ходить, вычислим–ка (8 - 2^n)! при n=2:

Код:
program faktorial;
var n,s,k: real;
begin
write('Введите n ');
readln(n);
s:=1; k:=1; n:=8 - (exp(n*ln(2)));
while k<n do
begin
k:=k+1;
s:=s*k;
end;
writeln(n);
writeln('Ответ ',s:0:1);
end.
В School Pak ответ 24, «как и положено».

Цитата:
Сообщение от Stilet Посмотреть сообщение
я его проверил на своем ТР71 выдает 24, как и положенно.
У меня NTVDM ни на одной машине под рукой нет, так что не смогу проверить. Но что–то мне подсказывает, в NTVDM с хорошей вероятностью будет 120.


Кстати, можно ещё потестить изначальный пример на разных n. По–любому где–нибудь отклонится в другую сторону.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 26.03.2021, 18:40   #16
Cherepachka
Новичок
Джуниор
 
Регистрация: 26.03.2021
Сообщений: 3
По умолчанию

Здравствуйте. Ребенок начал изучать программирование в школе. На Виндоус 10 смогли установить только school pak. Сам Паскаль работает, но при запуске программы на выполнение, результат на экран не выводится. Все команды в меню Компиляция перепробовали и Сброс главного экрана делали. Бестолку. Результат на экран не выводится.
Но ведь так не должно быть!
Как настроить school pak чтобы больше эта проблема не повторялась? Помогите очень нужно.
Cherepachka вне форума Ответить с цитированием
Старый 26.03.2021, 18:50   #17
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Покажите код программы. У вас точно открыто окно "Вывод" (Отладка - Вывод)?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.03.2021, 20:24   #18
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

вангую что выводится, но только окно закрывается.
Readln; перед End. надобно
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 26.03.2021, 23:39   #19
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Цитата:
На Виндоус 10 смогли установить только school pak.
Т.е. пробовали и другое, но просто никак?
В списке литературы есть ссылки на книгу "Песни о Паскале".

Если внимательно почитаете, и отбросите версию Pascal ABC (очень много нареканий на форумах), то сможете поставить и Free Pascal или Lazarus.
Это бесплатные среды и нормально работают в среде Windows 10.

Pascal - это требование преподавателя? В ЕГЭ есть и Python.

В дополнение могу порекомендовать книгу Т.А. Павловская, Программирование на ЯВУ, Паскаль.
Искать там-же.

PS: Не вижу смысла изучать среду, которой нет в ВУЗе. Или я чего-то недопонимаю ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 08.05.2022, 20:36   #20
Cherepachka
Новичок
Джуниор
 
Регистрация: 26.03.2021
Сообщений: 3
По умолчанию

Спасибо всем. Разобрались.
В школе изучают в 7-9 классах Pascal. Учитель ввел учеников и меня в заблуждение. Установили Pascal ABC.NET. Он работает и на 10-ке и на 7-ке нормально.
У нас в городе школы не ахти какие. Нормально уроки не преподают, до Питона детям как до Китая пешком! Элементарным вещам детей на уроках информатики не учат. Дети на полном самообучении! А если учесть нагрузку детей, то у них совершенно нет времени на поиски информации в Интернете. Приходится помогать детям, как могу.
Обучаю детей азам работы на компьютере, тому чего их по идее в школе должны научить. Обучаю азам программирования (из того, что сама еще помню и умею).
В любом случае всем спасибо. Простите что не ответила сразу.
Cherepachka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ини файл ошибка(глюк или что?) dr.Chas Общие вопросы Delphi 10 18.06.2008 08:09
Класс или тип (сам не знаю) WOLFak Общие вопросы Delphi 6 27.03.2008 00:20
Глюк )) theos О форуме и сайтах клуба 9 08.01.2008 17:44
Глюк? Или я туплю? Nick93.93 Общие вопросы Delphi 6 04.03.2007 14:28