![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Maximka |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Подскажите пожалуйста как реализовать калькулятор с числами произвольной разрядности?????
например
Польская запись вроде не подходит....Можно сделать массив строк, и забивать каждый элемент в эти строки...Но как потом проверять приоритетность действий ?????? |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Maximka, с чего бы это польская запись здесь не подходила? Что мешает? Слишком большие числа? Пользуйся Real... Мало? Double, Extended...
Если тебе надо действительно ЛЮБУЮ разрядность - смотри в сторону "Длинной Арифметики" (у нас в FAQ-е есть такая тема)... Но все равно, чтобы вычислить значение выражения, его сначала придется перевести в постфикс... |
Maximka |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Может польская и подходит, но я что-то не пойму как ее применить....
Допустим дана строка (3567-123), то по идее на выходе должно получиться: 3567123- Вот здесь у меня ступор. ![]() Помогите пожалуйста!!!! вот пример моей проги (но она считает с числами от 1 до 9). " (Показать/Скрыть)
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Ты меня конечно извини, но ты бы уточнил, ЧТО СДЕЛАТЬ хочешь? Просто преобразовать выражение в постфикс, или же ВЫЧИСЛИТЬ его? Если вычислить, то ... вычисляй, зачем ты его распечатываешь?
Я же тебе давал ссылку на FAQ, где есть и калькулятор с использованием постфиксных выражений... Там был? |
Maximka |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вы тоже извиняйте, что толком объяснить не могу. Я хочу сделать калькулятор, который бы вычислял скобочные выражения, с числами произвольной разрядности. (например: (23434-1)-(13414+1)). По началу думал что это можно с помощь постфиксой записью.
Моя задача это делает так: 1.) Пользователь вводит строку. Допустим такую (1+1) 2.) Выражение просматривается посимвольно с лева на право. Прога, с помощью стеков переводит выражение в постфиксную запись 1 1 + 3.) Далее алгоритм считывает посимвольно новую строку и преобразует строки в числа и знаки. 4.) Складывает 1+1. Итог:2 А если ввести числа большой разрядности 124+234, то глюк. Прога переводит выражение в постфиксную запись 1 2 4 2 3 4 +. Получается она сливает 2 числа в одно. И я никак не пойму как от этого избавиться. FAQ читал , но там тоже задачи не для больших чисел. Помогите пожалуйста доработать задачу, чтобы она все таки научилась считать числа с произвольной разрядностью. СПАСИБО!!!!!! ![]() |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Ну, вот же программа:
FAQ: Постфиксная форма записи, Перевод выражения в постфикс Только что проверил - она прекрасно отработала со строкой: const Результат: Цитата 142 3 2214 + * 5 * В чем проблема? |
Maximka |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Значит проблема в моей задаче. (не хочет она правильно работать).. Не могли бы вы взглянуть на нее своим профессиональным взглядом???!!!! Я новичек в программировании, и поэтому мне еще тяжело читать чужой код....
![]() ------- Спасибо, что уделяете свое время.............. |
Maximka |
![]()
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот мой алгоритм переводящий выражение в польскую запись. Попробуйте запустить его с большими числами и вы сразу, поймете почему он не подходит для чисел с произвольной разрядностью..Вы можете осудить меня за попытку "повторного изобретения велесипеда", но мне очень хочется довести задуманное до конца...
Помогите пожалуйста доработать мой алгоритм. " (Показать/Скрыть)
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Цитата поймете почему он не подходит для чисел с произвольной разрядностью Для этого совершенно не надо ничего запускать... Я тебе и так скажу. Вот то, что тебе мешает:Procedure opz(var output: string); То есть ты ГАРАНТИРОВАННО запихнешь в стек только один символ. Так? А это неверно... Тебе надо сначала прочесть из строки ряд символов (до первого знака операции, скобки или конца строки), и только потом заносить эту последовательность в стек... |
Maximka |
![]()
Сообщение
#10
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо!!!! Буду мудрить...Вроде понял, что надо менять
|
![]() ![]() |
![]() |
Текстовая версия | 2.08.2025 9:01 |