задача 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
- 995 reads
Gurgen
Thu, 11/04/2021 - 19:38
Permalink
как изменить параметр "else"
как изменить параметр "else" чтобы последнее действие не выносить из цикла т.е добавить условие выполнения когда j = length(s) ?
vedro-compota
Sun, 11/07/2021 - 13:15
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)