Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

из бэйсика в дэлфи   Найти похожие ветки 

 
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 аообще забудь.

Во-вторых раз «даже погрешность вычисления не приплести», то ты просто ошибся в формулах. Я например при работе с формулами оч. часто что-то не так пишу(скобки например), так что садись и проверяй каждую функцию&#133


 
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 трейсишь каждую ф-цию. Сначала вычисляешь по ф-ле на листике(если нет, то выпиши на лист тоже способ найти ошибку) с помоью калькулятора результат, а затем сравниваешь с тем, что выдаёт функция. Если не совподает — то ищи ошибку.

Кроме того человек понимающий в самой матиматике может подсказать такие входные данные, что проверить будет гораздо проще&#133


 
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]

> Может в той реализации была допущена ошибка, а у тебя все
> нормально?

В какой той? Он же васика сдирал&#133


 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.028 c
1-1184482205
atruhin
2007-07-15 10:50
2007.10.21
Cannot access package information


2-1190812703
Malik
2007-09-26 17:18
2007.10.21
Application


2-1190627331
АндрейК
2007-09-24 13:48
2007.10.21
множественный выбор в DBGrid


15-1190466131
mikezubr
2007-09-22 17:02
2007.10.21
{$E .XXXXXXX}


15-1190414620
Kostafey
2007-09-22 02:43
2007.10.21
А форум-то наш клиентами самый богатый.