Вопрос задан 01.08.2023 в 11:12. Предмет Информатика. Спрашивает Милославская Екатерина.

Напишите программу в синтаксисе Free Pascal или Turbo Pascal, которая вычисляет выражение,

состоящее из чисел и знаков (допускаются только знаки «+» или «–», количество чисел и знаков не ограничено). Выражение вводится как символьная строка, все числа целые. ввод: 12+42-44-12-13+1-23 вывод: -37 ввод: 12-53-2+23+0-25 вывод -45
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Заонегин Виталик.
Var
  S, chislo: string;
  i,A,B,C,E: integer;
Begin
  B := 0;
  WriteLn('Введите выражение: ');
  ReadLn(S);
  i := S.length;
  While (i > 0) do
  begin
    Case S[i] of
      '+':
        begin
          val(chislo,A,E);
          B := B + A;
          chislo := '';
        end;
      '-':
        begin
          val(chislo,A,E);
          B := B - A;
          chislo := '';
        end;
      else
        chislo := S[i] + chislo;
    End;
    i := i - 1;
  end;
  if (chislo <> '') then
  begin
    val(chislo,A,E);
    B := B + A;
  end;
  WriteLn(B);
End.
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для вычисления выражения, состоящего из чисел и знаков, можно использовать алгоритм простого обхода строки, чтобы извлечь числа и знаки операций, а затем выполнить операции последовательно. Ниже приведен пример программы на языке Free Pascal:

pascal
program CalculateExpression; uses sysutils; function EvaluateExpression(expression: string): integer; var num: integer; sign: char; i: integer; begin // Инициализируем первое число и знак i := 1; num := StrToInt(Trim(Copy(expression, i, PosAny('+-', expression + '+-', i) - i))); Inc(i, Length(IntToStr(num))); // Выполняем операции while i <= Length(expression) do begin sign := expression[i]; Inc(i); // Извлекаем следующее число num := StrToInt(Trim(Copy(expression, i, PosAny('+-', expression + '+-', i) - i))); Inc(i, Length(IntToStr(num))); // Выполняем операцию case sign of '+': num := num; '-': num := -num; end; end; Result := num; end; var expression: string; resultValue: integer; begin WriteLn('Введите выражение:'); ReadLn(expression); resultValue := EvaluateExpression(expression); WriteLn('Результат вычисления: ', resultValue); end.

Скопируйте этот код в среду программирования, которая поддерживает Free Pascal (например, Lazarus) и запустите программу. Она попросит вас ввести выражение, и затем выдаст результат его вычисления. Обратите внимание, что эта программа поддерживает только целые числа и знаки "+" и "-", и не выполняет операции приоритетности или скобки.

0 0

Похожие вопросы

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

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

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