Помогите исправить программку |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Помогите исправить программку |
stager |
9.01.2007 0:15
Сообщение
#1
|
|||
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Кирик Репутация: 0 |
Програма нахождения максимальной площади по заданым точкам
program dom2;
|
|||
Malice |
9.01.2007 1:15
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
|
Bokul |
9.01.2007 1:22
Сообщение
#3
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
А какая ошибка? У меня компилируется.
Цитата Вещественные числа нельзя сравнивать через = и <>. Честно? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
hiv |
9.01.2007 12:03
Сообщение
#4
|
Профи Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: 11 |
Честно? Как ты думаешь, что выдаст эта программа?
var r :real; Я запускал на TP7.0 и получил ответ 6.99999999999272E+0000 И это нормально! Вещественные числа нельзя сравнивать так, как это делают с целыми. Всегда работая с ними необходимо понить про ошибки округления (их накопление) и точность вычисления. 2Malice Сообщение отредактировано: hiv - 9.01.2007 12:04 -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Malice |
9.01.2007 12:17
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Честно? var x:real; Вот хороший пример, показательный. У hiv посложнее.. У меня, правда, чуть другой аспект затрагивается, но суть таже. Сообщение отредактировано: Malice - 9.01.2007 12:19 |
stager |
9.01.2007 17:38
Сообщение
#6
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Кирик Репутация: 0 |
не понял что такое e,
я так понял берём разность по модулю и всё это меньше какого то числа т.е если взять число чуть больше 0 то будет что надо? и ещё если мы берём 4 точки и задаём прямую линию он пишет что паралелограмма нет а если больше точек то он его находит. Как это исправить? Сообщение отредактировано: stager - 9.01.2007 18:06 |
Malice |
9.01.2007 17:54
Сообщение
#7
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
|
stager |
9.01.2007 20:07
Сообщение
#8
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Кирик Репутация: 0 |
Всем большое спасибо теперь всё работает!
|
Bokul |
10.01.2007 1:12
Сообщение
#9
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
-------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
10.01.2007 1:17
Сообщение
#10
|
Гость |
Bokul, раздел не про 32-битные компиляторы... В FPC Real - сопроцессорный тип, а не эмуляция, приведенная программа с типом Single/Double даже в TP уже будет выводить семерку...
|
Bokul |
10.01.2007 1:32
Сообщение
#11
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Почему тогда программа Malice-а дала неверный результат?
-------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
10.01.2007 1:37
Сообщение
#12
|
Гость |
Цитата(Malice @ 9.01.2007 11:17) У меня, правда, чуть другой аспект затрагивается Поэтому и дала такой результат... Кстати, вопрос-то был в том, что нельзя сравнивать вещественные числа, так что ориентируйся именно на программу Malice |
Malice |
10.01.2007 12:01
Сообщение
#13
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Почему тогда программа Malice-а дала неверный результат? Почему не верный ? Красиво получилось.. В моем примере даже 2 аспекта: 1. погрешность накапливается не только в выражениях, существует еще погрешность представления числа. Поэтому 0.1 в real - это 1.00..023E-1. 2. При включенном сопроцессоре в паскале все константные вещественные числа считаются сопроцессором, т.е. приводятся к типу Extended (при выключенном - к Real), а 0.1 в extended представляется без погрешности.. Исходя из того, что сопроцессор у тебя наверняка включен и real(0.1)!=extended(0.1) - получаем такой результат. |
мисс_граффити |
10.01.2007 14:48
Сообщение
#14
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
10.01.2007 17:54
Сообщение
#15
|
Гость |
|
мисс_граффити |
10.01.2007 18:06
Сообщение
#16
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
ну, как бы то ни было, это оффтоп. было так: но мой пример со всеми комбинациями значений выделенных настроек выдает равенство ) Сообщение отредактировано: мисс_граффити - 10.01.2007 18:13 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Malice |
10.01.2007 18:55
Сообщение
#17
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Это нормально, у тебя же не 0.1 Скажем так, погрешность при представлении вещественного числа _вероятна_.
И чтоб до конца быть политкорректным выведем правило: Использование = и <> с вещественными числами не рекомендуется, т.к. не гарантирует правильность работы программы и допускаяется на свой страх и риск. |
мисс_граффити |
10.01.2007 19:11
Сообщение
#18
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
я же не спорю
понятно, что от числа зависит (0.5=2^-1... мантиссы, выделенной под real, а тем более под extended, хватит с огромным запасом) я просто вторую неделю пытаюсь выучить вычмат... и после n-ного перечитывания первой лекции занудность стала ярко выраженной. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Текстовая версия | 23.05.2024 15:53 |