
С клавиатуры вводится строка, содержащая целые числа, отделённые друг от друга знаками
арифметических операций + - * /. Подсчитать и вывести значение этого выражения. Операции выполняются последовательно (как на калькуляторе) без учёта приоритета операций. Pascal Abc

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

A,R:real;
i,L,z:integer;
S:string;
Begin
Read(S);
L:=Length(S);
i:=1;
R:=0;
While (S[i]in['0'..'9'])and(i<L) do
Begin
R:=R*10+StrToInt(S[i]);
i:=i+1
End;
While i<L do
Begin
Case S[i] of
'+':z:=0;
'-':z:=1;
'*':z:=2;
'/':z:=3;
End;
i:=i+1;
A:=0;
While (S[i]in['0'..'9'])and(i<L) do
Begin
A:=A*10+StrToInt(S[i]);
i:=i+1
End;
if i=L then A:=A*10+StrToInt(S[L]);
Case z of
0:R:=R+A;
1:R:=R-A;
2:R:=R*A;
3:R:=R/A;
End;
End;
WriteLn('R = ',R);
End.



Да, конечно. Давайте напишем простую программу на языке Pascal ABC, которая будет выполнять подсчет значения выражения, введенного с клавиатуры. Для упрощения предположим, что ввод будет корректным, и мы не будем реализовывать обработку ошибок.
```pascal program Calculator;
var inputString: string; i: integer; currentValue, nextValue: real; currentOperation: char;
begin // Ввод строки с выражением writeln('Введите строку с арифметическим выражением:'); readln(inputString);
// Инициализация начальных значений currentValue := 0; currentOperation := '+';
// Обработка каждого символа строки for i := 1 to length(inputString) do begin case inputString[i] of '+', '-', '*', '/': begin // Выполнение операции с предыдущим значением case currentOperation of '+': currentValue := currentValue + nextValue; '-': currentValue := currentValue - nextValue; '*': currentValue := currentValue * nextValue; '/': currentValue := currentValue / nextValue; end;
// Установка новой операции currentOperation := inputString[i];
// Сброс значения для следующего числа nextValue := 0; end; else begin // Формирование числа из цифр nextValue := nextValue * 10 + strToInt(inputString[i]); end; end; end;
// Выполнение последней операции case currentOperation of '+': currentValue := currentValue + nextValue; '-': currentValue := currentValue - nextValue; '*': currentValue := currentValue * nextValue; '/': currentValue := currentValue / nextValue; end;
// Вывод результата writeln('Результат выражения: ', currentValue); end. ```
Программа предлагает ввести строку с арифметическим выражением, после чего она обрабатывает эту строку, выполняя операции последовательно без учета приоритета. Результат выводится на экран.
Примечание: Эта программа представляет собой простой пример и не включает в себя обработку ошибок или другие дополнительные функции.


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