Вопрос задан 22.02.2021 в 00:54. Предмет Информатика. Спрашивает Antciferov Nikita.

На вход программе задается выражение типа ( 5 + 5 * 3 ) / 5 * ( 5.5 – 6 ). Необходимо посчитать и

вывести ответ. Могут встретиться символы ( ) / * - +, считать как для дробных чисел
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Шакиров Алексей.
(5+5*3)=20
5*(5.5-6)=-5.5
20/(-5.5)=-3.6
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для вычисления данного выражения, можно использовать стек и алгоритм обратной польской записи (Reverse Polish Notation, RPN).

  1. Создадим пустой стек для операторов и пустой стек для операндов.
  2. Разобьем входную строку на отдельные токены (числа и операторы) с учетом пробелов. В данном случае, токены будут: '(', '5', '+', '5', '', '3', ')', '/', '5', '', '(', '5.5', '-', '6', ')'.
  3. Пройдемся по каждому токену в порядке их появления:
    • Если токен - число, добавим его в стек операндов.
    • Если токен - оператор, выполним следующие действия:
      • Если стек операторов пуст или верхний оператор в стеке имеет меньший приоритет, чем текущий оператор, поместим текущий оператор в стек операторов.
      • В противном случае, пока верхний оператор в стеке имеет больший или равный приоритет, чем текущий оператор, извлечем оператор из стека операторов и добавим его в стек операндов.
      • Поместим текущий оператор в стек операторов.
    • Если токен - открывающая скобка '(', поместим ее в стек операторов.
    • Если токен - закрывающая скобка ')', выполним следующие действия:
      • Пока верхний оператор в стеке операторов не является открывающей скобкой, извлечем оператор из стека операторов и добавим его в стек операндов.
      • Удалим открывающую скобку из стека операторов.
  4. По окончании обработки всех токенов, если в стеке операторов остаются операторы, извлекаем их и добавляем в стек операндов.
  5. В конце в стеке операндов останется только одно значение - результат вычисления.

Применяя этот алгоритм к данному выражению, получим следующие шаги:

Токены: '(', '5', '+', '5', '', '3', ')', '/', '5', '', '(', '5.5', '-', '6', ')'

Шаг 1: Стек операндов: [] Стек операторов: []

Шаг 2: Токен: ( Стек операндов: [] Стек операторов: [

Шаг 3: Токен: 5 Стек операндов: [5] Стек операторов: [

Шаг 4: Токен: + Стек операндов: [5] Стек операторов: [+]

Шаг

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос