Урок 18. Задача 8.
Primary tabs
На вход вашей программы подается строка вида:
Напишите программу, которая разбирает вычисляет результат этого приложения (сделайте поддержку операций сложения и вычитания).
type arrI = array[1..10] of integer; type arrC = array[1..4] of char; var s :string; i, ind :integer; arI :arrI; arC :arrC; function issdigit(s :string) :boolean; var fl :boolean; begin if (s >= '0') and (s <= '9') then fl := true else fl := false; issdigit := fl; end; function get_int_array(s :string; arI :arrI) :arrI; var i, j, n :integer; s_i :string; begin j := 1; for i := 1 to high(arI) do if issdigit(s[i]) then s_i := s_i + s[i] else begin val(s_i, n); arI[j] := n; j := j + 1; s_i := ''; end; get_int_array := arI; end; function get_char_index(s_char :char; arC :arrC) :integer; var i :integer; begin for i := 1 to high(arC) do if s_char = arC[i] then get_char_index := i; end; function get_string(s :string) :string; var i :integer; s_2 :string; begin for i := 1 to length(s) do if s[i] <> ' ' then s_2 := s_2 + s[i]; get_string := s_2; end; begin for i := 1 to high(arC) do // массив символов arC[i] := '+-*/'[i]; s := '16 + 3'; s := get_string(s); // убираю пробелы из строки arI := get_int_array(s, arI); // массив чисел for i := 1 to length(s) do if not issdigit(s[i]) then ind := get_char_index(s[i], arC); // получаю оператор if ind = 1 then writeln(arI[1] + arI[2]) else writeln(arI[1] - arI[2]); readln(); end.
- Log in to post comments
- 347 reads
vedro-compota
Wed, 09/14/2022 - 19:47
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)