C/C++

Как работает реальный калькулятор?

Вот учу С++, и задаюсь вопросом, мы же можем прибавлять сотни тысяч чисел на калькуляторе, там сотни тысяч новых перменных?
В 80-е годы я оказался в одном из колхозов и случайно наткнулся на книжку «Калькулятор - твой помощник и соперник в играх» (автор — Александр Гайштут). Если Вы ещё не знакомы с этой книгой, советую ознакомиться.

★ СЛЕДУЮЩИЕ ДВЕ ССЫЛКИ НЕПОСРЕДСТВЕННО НА СКАЧИВАНИЕ DJVU (одно и то же). Не переходите по ним, если Вы не хотите скачать файл.

http://publ.lib.ru/ARCHIVES/G/GAYSHTUT_Aleksandr_Grigor'evich/Gayshtut_A.G._Kal'kulyator_-_tvoy_pomoschnik_i_sopernik_v_igrah.(1988).[djv-fax].zip

https://djvu.online/download/mtMOKEglVuQva

Ссылки испытаны 14.03.2022. В будущем актуальность ссылок не гарантируется!!!
• К сожалению Парсинг искажает первую из ссылок. Я вынужден подать их простым текстом.

✓ Обратите внимание на то, что в программируемом калькуляторе есть стек, и это позволяет вводить в калькулятор простые выражения.

Но даже в примитивном калькуляторе есть стек из двух ячеек, этого достаточно для выполнения одной двуместной операции.

Этот стек и отвечает на Ваш вопрос.
Олег Карпов
Олег Карпов
16 172
Лучший ответ
Алексей Третьякович Обязательно ознакомлюсь, большое вам спасибо!
Олег Карпов Попробуйте на физическом калькуляторе понажимать клавиши в следующем порядке:

2 + 2 = = =

На дисплее друг за другом будет появляться:

2, 2, 4, 6, 8

Ясно, что первые две цифры — аргументы операции, третья — результат. А четвёртая и пятая?
В примитивном калькуляторе всего 3 переменных: аккумулятор Х, операнд Y и память M. Этого более чем достаточно.
Дима Стафиевский В некоторых и памяти нет
Прочитайте книгу "Искусство программирования на Java" Герберт Шилдт. и узнаете. Там как раз с начала книги описывается весь процесс создания калькулятора на Java. Потом описывается, как написать свой собственный Интерпретатор на Java. А потом как создать менеджер закачек по типу Торрента. А дальше я пока не прочитал. Вот здесь https://visualstudio.microsoft.com/ru/ можно скачать компилятор для языка программирования C#.
Нет. Переменная создаётся в тот момент, когда пользователь нажимает клавишу с цифрой. Каждой цифре соответствует двоичный код.
Алексей Третьякович Опаа, даже так можно
Олег Карпов Вообще-то интерпретаторы клавиатуры бывают различными, но в калькуляторах как правило один из двух: 1) собирает нажатия в цепочку, потом переводит 2-10 код в двоичный; 2) циклически умножает частичное значение на 10 и прибавляет новую цифру. В обоих случаях используется вспомогательная память.
Динамическое выделение памяти - ответ. На pawn калькулятор не напишешь к примеру.
C/C++ можно сделать структуру из двух операндов (как сказано выше) и указателя на участок памяти и потом юзать malloc/realloc;
UPD: вообще прежде чем в Си лезть, мне кажется лучше будет под тотже NASM простенькие программки пописать, даже без системных вызовов. Там с регистрами быстро все в голове образуется.
SC
Sasha Cot
123