Глава 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
- 1725 reads
vedro-compota
Wed, 07/01/2020 - 20:15
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)