
Вопрос задан 01.08.2023 в 11:12.
Предмет Информатика.
Спрашивает Милославская Екатерина.
Напишите программу в синтаксисе Free Pascal или Turbo Pascal, которая вычисляет выражение,
состоящее из чисел и знаков (допускаются только знаки «+» или «–», количество чисел и знаков не ограничено). Выражение вводится как символьная строка, все числа целые. ввод: 12+42-44-12-13+1-23 вывод: -37 ввод: 12-53-2+23+0-25 вывод -45

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

Отвечает Заонегин Виталик.
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.
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.



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для вычисления выражения, состоящего из чисел и знаков, можно использовать алгоритм простого обхода строки, чтобы извлечь числа и знаки операций, а затем выполнить операции последовательно. Ниже приведен пример программы на языке Free Pascal:
pascalprogram 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) и запустите программу. Она попросит вас ввести выражение, и затем выдаст результат его вычисления. Обратите внимание, что эта программа поддерживает только целые числа и знаки "+" и "-", и не выполняет операции приоритетности или скобки.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili