String23. Дана строка, изображающая арифметическое выражение вида «<цифра>±<цифра>±…±<цифра>», где на месте знака операции «±» находится символ «+» или «–» (например, «4+7–2–8»). Вывести значение данного выражения (целое число).
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
program String23; var i,Rez,Operation:integer; S:string; begin Write('S:'); Readln (S); Rez:=ord(S[1])-48; for i:=2 to Length(S) do if (ord(S[i]) in [48..57]) then Rez:=Rez+operation*(ord(S[i])-48) else if (ord(S[i]) = 43) then Operation:=1 //+ else if (ord(S[i]) = 45) then Operation:=-1; //- Writeln(Rez); end. |
Другие задачи из раздела String можно посмотреть здесь.
Вы здесь (да и не только здесь) намеренно избегаете конструкции вида IF-THEN-ELSE-IF в пользу наглядности и простоты восприятия?
Не знаю почему я использовал именно такую конструкцию. Но согласен так лучше. Поправил.
Было:
Стало:
Хотя мне кажеться в Pascal это как то не смотриться. 🙂