Форум: "Прочее";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
Внизиз бэйсика в дэлфи Найти похожие ветки
← →
DeadLord © (2007-09-24 08:41) [0]Вот дали мне на лето переписать программу по выполнению лабораторной из бэйсика в паскаль с целью выполнения на ёё базе дипломной работы. Переписать то я переписал, но в следствие того, что программа производит большое количество различных математических операций, используется тип real. Как следствие, результаты рассчетов в бэйсике и дэлфи сильно рознятся, причом на столько, что тут даже погрешность вычисления не приплести... Знакомый сказал, что сделать тут ничего нельзя, но как то с трудом верится, пути должны быть... Помогите пожалуйстя, горю!!!
← →
homm © (2007-09-24 08:45) [1]Ну и как мы тебе можем помошь? Морально поддержать? Код показывай, еоторый не верно считает.
← →
Kolan © (2007-09-24 08:57) [2]> используется тип real.
Во-первых используй Double, а про real в Delphi аообще забудь.
Во-вторых раз «даже погрешность вычисления не приплести», то ты просто ошибся в формулах. Я например при работе с формулами оч. часто что-то не так пишу(скобки например), так что садись и проверяй каждую функцию…
← →
Anatoly Podgoretsky © (2007-09-24 08:57) [3]> DeadLord (24.09.2007 08:41:00) [0]
Разберись какой тип с плавающей запятой используется в бейсике и строго проверь все уравнения и логику работы программы.
← →
DeadLord © (2007-09-24 09:03) [4]мдя... там код- 4 или 5 процедур, причем не коротких, которые отвечают за промежуточный результат, который уже исходно не верен.
А помощи я жду следующей: нужен совет как выцепить и пофиксить эту разность в вычислениях бэйсика и делфи
Выложить код не получится- ограничение по количеству символов
← →
Сергей М. © (2007-09-24 09:08) [5]
> Выложить код не получится- ограничение по количеству символов
Выложи архив куда-нибудь на публичный сервер, например, slil.ru и приведи сюда ссылку.
← →
DeadLord © (2007-09-24 09:10) [6]
> Разберись какой тип с плавающей запятой используется в бейсике
> и строго проверь все уравнения и логику работы программы.
>
ну, я не очень силен в бэйсике:( там вообще не указывается тип- просто тупо берется переменная и рассчитывается
> Во-первых используй Double, а про real в Delphi аообще забудь.
А почему? или по какой причине?
> Во-вторых раз «даже погрешность вычисления не приплести»,
> то ты просто ошибся в формулах. Я например при работе с
> формулами оч. часто что-то не так пишу(скобки например),
> так что садись и проверяй каждую функцию…
ээээээээээ.... я конечно сяду и вылижу все еще раз, но сомневаюсь что там что-то осталось после 3-х проходов...
← →
Kolan © (2007-09-24 09:10) [7]> Выложить код не получится— ограничение по количеству символов
Боже упаси, всеравно за тебя никто искать не будет.
> А помощи я жду следующей: нужен совет как выцепить и пофиксить
> эту разность в вычислениях бэйсика и делфи
Выходя у тебя нет. Хорошобы взять того, кто разбирается в этих формулах. Далее пользуясь F7 и F8 трейсишь каждую ф-цию. Сначала вычисляешь по ф-ле на листике(если нет, то выпиши на лист тоже способ найти ошибку) с помоью калькулятора результат, а затем сравниваешь с тем, что выдаёт функция. Если не совподает — то ищи ошибку.
Кроме того человек понимающий в самой матиматике может подсказать такие входные данные, что проверить будет гораздо проще…
← →
Kolan © (2007-09-24 09:13) [8]> А почему? или по какой причине?
real types + F1
← →
DeadLord © (2007-09-24 09:13) [9]
> Выложи архив куда-нибудь на публичный сервер, например,
> slil.ru и приведи сюда ссылку.
http://slil.ru/24891757
← →
DeadLord © (2007-09-24 09:15) [10]
> Выходя у тебя нет. Хорошобы взять того, кто разбирается
> в этих формулах. Далее пользуясь F7 и F8 трейсишь каждую
> ф-цию. Сначала вычисляешь по ф-ле на листике(если нет, то
> выпиши на лист тоже способ найти ошибку) с помоью калькулятора
> результат, а затем сравниваешь с тем, что выдаёт функция.
> Если не совподает — то ищи ошибку.Кроме того человек понимающий
> в самой матиматике может подсказать такие входные данные,
> что проверить будет гораздо проще…
я боялся такого ответа:( придется наверно так и делать, если ничего больше не получится предпринять
← →
Anatoly Podgoretsky © (2007-09-24 09:18) [11]> DeadLord (24.09.2007 09:10:06) [6]
> Во-первых используй Double, а про real в Delphi аообще забудь.
> А почему? или по какой причине?
Если достаточно высокая версия Дельфи и ты не вмешивался в настройки, то на этот совет можешь не обращать внимания, поскольку real = double
← →
DeadLord © (2007-09-24 09:19) [12]уже прочитал хэлп, там написано, что эти типы эквивалентны
← →
Anatoly Podgoretsky © (2007-09-24 09:24) [13]> DeadLord (24.09.2007 09:15:10) [10]
Можно много чего предпринять, например поиграться типами
1. single vs double
2. вставить отладочный вывод в обеих программах (в промежуточных местах, для оценки правильность алгоритма), позволит обнаружить ошибки в формулах
Но все это тебе придется делать самому, никто за тебя не будет делать отладку
← →
DeadLord © (2007-09-24 09:25) [14]ну это то понятно... кароче седня забью на работу и сяду вылизывать код:(
← →
Anatoly Podgoretsky © (2007-09-24 09:26) [15]> DeadLord (24.09.2007 09:19:12) [12]
Неправильно ты прочитал текст, там написано, что они могут быть эквивалентны, но это не гарантируется, поскольку все в руках господа, то есть программиста. В общем случае принимай это на веру.
Но обычно погрешность от типов не бывает высокого порядка, ставлю на нарушение алгоритма, где ни будь не там поставил запятую.
← →
DeadLord © (2007-09-24 09:34) [16]спасибо. сегодня весь вечер и вся ночь моя... если не вычислю косяк, то пишу типовой диплом- проблем то...
← →
Сергей М. © (2007-09-24 09:35) [17]Посмотрел.
Полное безобразие даже в "тупом" портировании кода.
К примеру, raschet1 в Васике - процедура с параметрами, а в Делфи никаких параметров у одноименной процедуры не наблюдается.
И после этого ты хочешь, чтобы вся эта петрушка нормально заработала ?
← →
boriskb © (2007-09-24 09:38) [18]> Знакомый сказал, что сделать тут ничего нельзя
То есть он утверждает, что один и тот же алгоритм реализованный в бейсике и в дельфи всегда (!) даст разный результат?
Сам подумай — ну не ерунда ли? :)
И потом — откуда известно, что ошибочны расчеты в дельфи, а не на бейсике?
Может в той реализации была допущена ошибка, а у тебя все нормально?
← →
Kolan © (2007-09-24 09:40) [19]> Может в той реализации была допущена ошибка, а у тебя все
> нормально?
В какой той? Он же васика сдирал…
← →
Anatoly Podgoretsky © (2007-09-24 09:45) [20]> Kolan (24.09.2007 09:40:19) [19]
Да и задача не стоит в правильности вычислений, а в одинаковости результатов, с определенной точностью.
← →
boriskb © (2007-09-24 09:47) [21]> В какой той?
Есть две реализации одного алгоритма на разных языках.
Они дают разный результат.
В какой из них ошибка?
Или в обоих?
← →
DeadLord © (2007-09-24 09:50) [22]
> К примеру, raschet1 в Васике - процедура с параметрами,
> а в Делфи никаких параметров у одноименной процедуры не
> наблюдается.
хмм.... может я не правильно понял ход бэйсиковского кода, но на сколько я таки разобрался, данные передаются в процедуры параметрами в следствие того, что эти самые переменные нигде не определены, поэтому они определяются в заголовке процедуры
← →
homm © (2007-09-24 09:55) [23]> [22] DeadLord © (24.09.07 09:50)
> данные передаются в процедуры параметрами в следствие того,
> что эти самые переменные нигде не определены, поэтому они
> определяются в заголовке процедуры
Насколько я смог поняль тот бред, что здесь написан, тебе о том и говоят, что в бейсике там параметры есть, а в твоей попытки перевести на дельфи их как раз нет.
← →
boriskb © (2007-09-24 09:56) [24]
DeadLord ©
То есть ты не разбирался в математической сущности задачи, а тупо «транслировал» текст из бейсика в дельфи?
Тогда с вероятностью 90%% ошибка у тебя.
И не разработав алгоритм ты ее не найдешь.
← →
DeadLord © (2007-09-24 09:57) [25]я понял, что мне хотят сказать. я немного неверно выразился: в дэлфи я передаю данные не через параметры процедуры, а на сквозную из одной процедуры в другую- они у меня глобально объявлены. Или я не прав тут?
← →
Anatoly Podgoretsky © (2007-09-24 10:00) [26]> DeadLord (24.09.2007 09:57:25) [25]
Чего добиться то хочешь?
А "передача" через глобальные переменные - это еще один слой погрешности, вплоть до ядерного взрыва.
← →
Kolan © (2007-09-24 10:01) [27]> Или я не прав тут?
Не прав.
← →
Eraser © (2007-09-24 11:23) [28]
> DeadLord © (24.09.07 09:57) [25]
с этого и надо было начинать, бегом в магазин за книгой по паскалю )
← →
TUser © (2007-09-24 16:01) [29]Надо написать на Delphi эмулятор Бейсика, приче ровно того, на котром написан исходник. Делов-то.
А если серьезно, то надо вешать за подобные методы изготовления курсовых/дипломов и пр. Особенно - преподов, которые такое допускают.
← →
Anatoly Podgoretsky © (2007-09-24 16:40) [30]> TUser (24.09.2007 16:01:29) [29]
Никаких Бейсиков писать не надо, все давно написано и встроено в систему, доступ через WSH
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.046 c