![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
kizan |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
есть программа, в которой компиляционных ошибок нет, но вычисляет неверно.
в школе она запускалась нормально, принёс домой при запуске пишет Error while linking. если куда-нибудь дописать случайный символ, то паскаль пишет ошибку орфографии. если в этом же паскале написать простейшую программу типа var x:integer; работает без ошибочно. а именно на мою безошибочную программу выводит Error while linking. _____________________________ если кому интересно вот текст программы(калькулятор) var a,c,i,x:longint; Сообщение отредактировано: kizan - 31.01.2012 15:58 |
![]() ![]() |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ошибок (синтаксических) нет, программа частично работает (хоть и кривовато, ниже объясню, что имею в виду). Но я бы не стал такую программу сдавать. Ибо Copy/Paste ни к чему хорошему не приводит, а у тебя именно по этой "технологии" все написано. Ну вот скажи, зачем
Цитата procedure raznostb; выделенные 11 строк повторять во всех процедурах, выполняющих и умножение, и деление, и сложение, и вычитание? Один раз написать в основной программе: const , а потом в подпрограммах только производить само действие над уже подготовленными операндами, и заниматься отсеиванием заведомо неверных данных (при делении Делитель не может быть равным 0, твоя программа об этом ничего не говорит, а тихо вылетает) - никак нельзя было? Дальше. Нельзя просить у пользователя число в какой-то СС, отличной от 10-ной, и вводить его в LongInt. Только в строку. Даже если тебе удастся ввести число в СС с основанием 2..9 в целочисленную переменную, это будет неправильно. О том, что я могу ввести в ответ на запрос 16 и потом - любую 16-ричную цифру $A..$F и при этом твоя программа тоже вылетит - я опять же не говорю. Еще одна проблема: когда пользователь сказал, что у него число восьмеричное, надо проверять, что он ввел (он должен использовать только цифры 0 .. 7 в таком случае), иначе при конвертации к десятичному числу вылезут проблемы. На это тоже обрати внимание, понадобится еще одна функция, которая будет проверять, не содержит ли введенная пользователем строка запрещенных в выбранной им системе счисления символов, и если содержит - то просить ввести число заново. Итого: программу надо переписывать почти полностью. Единственный случай, когда она почти правильно работает - это выбор 10-ной СС. Но деление на 0 все-таки проверяй... Сообщение отредактировано: IUnknown - 1.02.2012 11:04 |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 11:16 |