Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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 аообще забудь.

Во-вторых раз «даже погрешность вычисления не приплести», то ты просто ошибся в формулах. Я например при работе с формулами оч. часто что-то не так пишу(скобки например), так что садись и проверяй каждую функцию&#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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.05 c
2-1190999717
Pacific
2007-09-28 21:15
2007.10.21
System


2-1191228928
F@T@L_Err0r
2007-10-01 12:55
2007.10.21
Завершение работы windows


11-1173903627
VVU
2007-03-14 23:20
2007.10.21
Прямоугольник текста в StrigGrid


2-1190535758
Jimmy
2007-09-23 12:22
2007.10.21
Сохранение в emf


2-1190886488
Nikfel
2007-09-27 13:48
2007.10.21
Список файлов и папок.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский