![]() |
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 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот тут разбиралось, почему возникает подобная ошибка: Error While Linking
P.S. Цитата если в этом же паскале написать простейшую программу типа и Цитата работает без ошибочно - то выбрасывай компилятор немедленно и бери другой, который выдаст тебе синтаксическую ошибку. Приведенная программа НЕ ДОЛЖНА компилироваться, а уж тем более - работать. |
kizan |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
да я торопился, точки с запятой криво расставил
![]() может кто поможет тогда ошибки в программе найти? а то мне завтра сдавать, буду в режиме "блокнота" задачу решать ![]() сделать калькулятор, делающий простейшие арифметические действия(+-*/) в разных(2-16) системах счисления. так и не дошло, как делать 11-16. там же буквы.. P.S. кому несложно, скомпильте у себя в паскале, будет-нет работать? Сообщение отредактировано: kizan - 31.01.2012 15:57 |
kizan |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
ребят плз помогите! мне её завтра сдавать!
|
IUnknown |
![]()
Сообщение
#5
|
![]() 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 |
kizan |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
1) подпрогамма-замена.
мы не проходили case of и нам не разрешат им пользоваться(пытался один парень уже..). поэтому и приходится бедным школьникам работать копипастом) 2)деление на ноль как-то не подумал. 3) говорил же программа недописана, сам вкурсе, что 11-16 СС не считает... буду переделывать, только вот где паскаль рабочий взять(всё-такие почему мой выдаёт error while linking?? ссылка не помогла..) 4) так и недопёр как в операциях переводов в другие СС делать действия с дробными числами типа 5.5? при деление делаю округление в нижнюю сторону, что, конечно, неправильно. |
TarasBer |
![]()
Сообщение
#7
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> мы не проходили case of и нам не разрешат им пользоваться(пытался один парень уже..). поэтому и приходится бедным школьникам работать копипастом)
Объясни связь между case of и копипастом. Заменить case на цепочку ifов - это что, сложнее, чем придумывать отмазки не менять свой код? > при деление делаю округление в нижнюю сторону, что, конечно, неправильно. Почему? Задание же только для целых чисел. -------------------- |
kizan |
![]()
Сообщение
#8
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
> мы не проходили case of и нам не разрешат им пользоваться(пытался один парень уже..). поэтому и приходится бедным школьникам работать копипастом) Объясни связь между case of и копипастом. Заменить case на цепочку ifов - это что, сложнее, чем придумывать отмазки не менять свой код? > при деление делаю округление в нижнюю сторону, что, конечно, неправильно. Почему? Задание же только для целых чисел. задание сделать калькулятор, умеющий считать в разных системах счисления. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 6:41 |