задача 8 урок 18
Primary tabs
На вход вашей программы подается строка вида:
5 + 6 -34 + 56 - 7 + 2("сколько угодно" чисел с операциями суммы и разности в любом порядке). Вычислите результат (пробелов между символом операции и числом может и не быть)
Решение
program task_8_lesson_18;
function delProbel(s: string): string; // удаляю лишние пробелы
var i: integer;
chislo: string;
begin
chislo := '';
for i := 1 to length(s) do
if ((s[i] >= '0') and (s[i] <= '9')) then
chislo := chislo + s[i]
else if (s[i] <> ' ') then
chislo := chislo + s[i];
result := chislo;
end;
var
s, s1: string;
i, j, n1, n2, code, otvet: integer;
z: char;
begin
readln(s);
s := delProbel(s);
i := 1;
s1 := '';
while (s[i] >= '0') and (s[i] <= '9') do // находим первое число
begin
s1 := s1 + s[i];
i += 1;
end;
z:= s[i];
val(s1, n1, code); // первое число
otvet := n1; // ответ на этом этапе первое число
s1 := '';
j := i + 1; // переход на следующий символ после первого '+'/'-'
for i := j to length(s) do
begin
if (s[i] >= '0') and (s[i] <= '9') then
s1 := s1 + s[i] // записали в строку следующее число
else
begin
val(s1, n1, code);
if z = '+' then
otvet := otvet + n1
else
otvet := otvet - n1;
z := s[i];
s1 := '';
end;
end;
val(s1, n2, code);// последний виток цикла сохранит в строку последнее число
if z = '+' then // делаю последнее действие
otvet := otvet + n2
else
otvet := otvet - n2;
writeln(otvet);
readln
end.Консоль
1000 + 1 - 2000 + 100 - 500 -1399
- Log in to post comments
- 1314 reads
Gurgen
Thu, 11/04/2021 - 19:38
Permalink
как изменить параметр "else"
как изменить параметр "else" чтобы последнее действие не выносить из цикла т.е добавить условие выполнения когда j = length(s) ?
vedro-compota
Sun, 11/07/2021 - 13:15
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)