Глава 17.Задача №7.Напишите программу, которая вычисляет результат приложения (сделать поддержку операций сложения и вычитания
Primary tabs
На вход вашей программы подается строка вида:
1 <целоечисло><произвольное число пробелов> <арифм.операция> <произвольное число пробелов> <целоечисло> например: 1 + 3 или 2 - 12Напишите программу, которая разбирает вычисляет результат этого приложения (сделайте поддержку операций сложения и вычитания).
program pascal_17_7;
type a = array [1..2] of integer; //секция обьвления типов
type b = array [1..1] of string;
{процедура заполения массивов по ссылке }
procedure filling_arrays( var arr_numb : a; var arr_s : b; s : string );
var j, i, l, int, code : integer;
symb, acc_string : string;
begin
j := 1;
i := 0;
l := 0;
while( j <= length( s ) )do
begin
symb := s[j];
acc_string := '';
while( symb >= '0' ) and ( symb <= '9' ) do
begin
acc_string += symb; // в переменную накапливаем символы
j += 1; // увеличиваем индекс
if ( j <= length( s ) ) then //если не вышли за длинну строки
symb := s[j] // символ равен увеличенному символу строки
else
break;
end;
if( acc_string <> '' ) then //если переменная не пуста
begin
i += 1; // индекс первого массива
val( acc_string, int, code ); // преобразование в число
arr_numb[i] := int;
end;
if( symb = '+' ) or ( symb = '-' ) then // если в строке есть соответствующие символы
begin
l += 1; // индекс второго массива
arr_s[l] := symb;
end;
j += 1; // при каждом проходе увеличиваем индекс
end;
end;
{ процедура вывода выражения }
procedure conclusion_expression( arr_numb : a; arr_s : b );
var total, i : integer;
begin
total := 0;
for i := 1 to high( arr_s ) do // обходим массив с символами
begin
if( arr_s[i] = '+' ) then
total += arr_numb[i] + arr_numb[i+1]
else
total += arr_numb[i] - arr_numb[i+1];
end;
writeln( total ); // вывод результата
end;
var arr_number : a;
arr_sign : b;
str : string;
begin // начало основной программы
writeln( 'input string: ' );
readln( str );
filling_arrays( arr_number, arr_sign, str ); // вызов процедуры
conclusion_expression( arr_number, arr_sign ); // вызов процедуры
end. // завершение основной программы- Log in to post comments
- 1925 reads
vedro-compota
Wed, 07/01/2020 - 20:15
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)