![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Maximka |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Добрый день!!! Помогите пожалуйста решить такую задачу:
Допустим дана такая строка (13121123123-123123123). Как извлечь из нее число до первого знака опереции (*,-,/,+) b и поместить его в другую строку. Конечно если знать что посли числа идет знак - то можно ипользовать эту реализацию. function QWERTY(s : string):string;. А если я не знаю, какой знак операции идет после числа. Как поступать в такой ситуации?????!! |
![]() ![]() |
Malice |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Не используй pos, иди по строке посимвольно:
i:=1; |
Maximka |
![]() ![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Malice, спасибо!!!Разобрался....Осталасась последняя ошибка..Она помойму связана с неправильным переводом числа (из стринг в реал).
Вот код программы. Проблемное место показано комментарием....Помогите пожалуйста. Мне во вторник нужно сдавать эту задачу!!!!!! (это калькулятор на базе польской записи);
Сообщение отредактировано: volvo - 26.11.2010 2:44 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Maximka, ты опять неверно пытаешься делать... Смотри внимательно:
for i := 1 to Length(out) do Если строка будет '123+234', сколько чисел у тебя будут занесены в стек? У тебя заносятся ЦИФРЫ! А это не нужно, надо занести именно числа... Я тебе уже говорил об этом. Кстати, зачем новую тему создал? Это же продолжение твоей предыдущей темы про "Польскую запись"... |
Maximka |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
ЗА новую тему извиняюсь...Старую можно сносить....
![]() volvo, что у меня не получается..Не могли бы вы исправить ошибку... Когда вводишь 1032+123123 в стек попадает только первое число, причем 8 раз |
Maximka |
![]() ![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я считываю строку до первого пробела и заношу результат в другую строку(out).В этой строке находятся только цифры, соответственно всю строку можно перевести в целое число (real),что я и делаю.В переменной num хранится число, я его переношу в стек S3. И так далее... Я никак не пойму почему в стек попадает несколько раз, только первое число?..Мне очень нужна ваша помощь...Помогите пожалуйста. Это последняя задача, которую мне осталось сдать...
|
Bill Gates |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот подобная программа, только попроще - там только сложение и вычитание.
Зато все работает. ![]() Прикрепленные файлы ![]() |
Maximka |
![]()
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
Maximka |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вроде исправил...Но один баг остался...Выражения вида (235674234-2565677) считаются на ура. А стоит ввести (235674234-2565677)-234. Результат почемуто неправильный. Помогите ПОЖАЛУЙСТА!!!!!!!!!
Сообщение отредактировано: volvo - 26.11.2010 2:45 |
Maximka |
![]()
Сообщение
#10
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
HELLLLLLLP!!!!!!!!!!!!!!!!!!!!! Мне задачу завтра сдавать!!!!! Очень хочется продолжать учиться!!!!!
![]() |
Malice |
![]()
Сообщение
#11
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Чего кричишь? Сам виноват.
![]() В процедуре Result ты при встрече в строке пробела пытаешься засунуть в стек число. Это было бы логично, если бы пробелы стояли только после чисел, а ты их лепишь и после знаков и после скобок. Всязи с этим проще всего заменить блок в case out[i] '0'..'9' : begin на '0'..'9' : begin out2:=''; Немного не корректно, но пойдет. ps: case с пробелом убрать вообще. Сообщение отредактировано: volvo - 3.11.2006 20:26 |
Maximka |
![]()
Сообщение
#12
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Malice, спасибо что откликнулся - добрая душа!!!! Но я уже сам все исправил..Если кому надо то кину исходники...
![]() |
![]() ![]() |
![]() |
Текстовая версия | 12.08.2025 13:09 |