![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 03.12.2010
Сообщений: 16
|
![]()
у меня к каждоме repeat свой until. че лишний ставить ?
|
![]() |
![]() |
![]() |
#12 | |||
Форумчанин
Регистрация: 23.09.2010
Сообщений: 682
|
![]()
лишним он будет когда компилятор скажет.
Хорошо, сейчас скопировав код из поста номер 3, я вставил его в блокнот, воспользовавшись поиском видим Цитата:
Цитата:
а вот Цитата:
Теперь поверили? Отдельные куски программы у вас правильные, а вот связаны в единую программу они не верно
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить. |
|||
![]() |
![]() |
![]() |
#13 |
Участник клубаДжуниор
Регистрация: 23.08.2008
Сообщений: 1,616
|
![]()
Да, PascalABC - интерпретатор языка, в следствие чего он не соответствует стандарту, но он очень и очень удобен, во много раз удобнее TP. Про отладку я вообще молчу, невероятно удобно сделана.
pushl $0x18E3DF6B
call ICQ |
![]() |
![]() |
![]() |
#14 |
Пользователь
Регистрация: 03.12.2010
Сообщений: 16
|
![]()
Теперь все работает.Но!!!
При выборе способа аналитический, т.е. ввод цифры отличной от 1 включается способ арифметический.Логическая операция почему то не работает( При вводе знака действия в арифметическом способе выходит ошибка, скриншот в прикрепленном файле. Код, который прислал, я исправил, смотрите последний. Что мне делать (((? |
![]() |
![]() |
![]() |
#15 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
А ты учитываешь что завершение ввода для read должен быть либо пробел либо энтер?
т.е. ты должен вводить свое выражение так - "1 + 2". и энтер
I'm learning to live...
|
![]() |
![]() |
![]() |
#16 |
Пользователь
Регистрация: 03.12.2010
Сообщений: 16
|
![]()
у меня 3 read. Это значит что для ввода выражения надо использовать 3 ввода. тоесть 1 ентер, + ентер, 2 ентер.Вот после ввода плюса ну или любого другого выходит ошибка представленная на скриншоте
|
![]() |
![]() |
![]() |
#17 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Вводят строку, а потом ее разбирают парсером. Опасно вводить элементы через read, он слабо для этого предназначен. А если точнее он морально устарел.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 03.12.2010
Сообщений: 16
|
![]()
а как тогда лучше ввести? через че? и разбор строки тогда производить через цикл и ord()?
Если не затруднит, вы не могли бы подправить код ? |
![]() |
![]() |
![]() |
#19 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
![]()
Ну я вот, когда с хорошим парсером было лень заморачиваться, делал разбор, сканируя строку задом наперёд. При сканировании я поддерживаю в актуальном состоянии баланс скобок. Если я внутри скобок, реагирую только на скобки. Если не внутри скобок, реагирую на нужные мне символы.
Задом наперёд — потому что 2 - 2 - 2 = (2 - 2) - 2, то есть, на правый минус нужно натолкнуться раньше, чем на левый. Сначала пытаюсь распознать строку как сумму. Если получилось, распознаю подстроки. Если не получилось, пытаюсь распознать как произведение. И т. д. Исходники можно посмотреть здесь: http://sources.codenet.ru/download/3075/DIFF3_PAS.html |
![]() |
![]() |
![]() |
#20 |
Пользователь
Регистрация: 03.12.2010
Сообщений: 16
|
![]()
ну а ввод строки как производить? если не через read, то через что ?
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Калькулятор на паскале | Buratino | Помощь студентам | 14 | 10.10.2010 13:18 |
Калькулятор на паскале, продолжение действия | tabber | Помощь студентам | 1 | 28.09.2010 18:33 |
Калькулятор на паскале | Nastya55555 | Помощь студентам | 1 | 05.05.2010 22:37 |
Калькулятор на C++ | stox11 | Помощь студентам | 2 | 09.02.2010 07:31 |
Калькулятор | ViNcHeStEr | Помощь студентам | 5 | 23.11.2008 15:39 |