Решение №5 из главы 16. Выделите из строки массив первых 8 строковых литералов, которые являются числами
Primary tabs
Пользователь вводит строку произвольных символов, выделите из неё массив первых 8 строковых литералов, которые являются числами. И выведите эти числа на экран.
Например, из строки:
rew2@#$$#435tr353453t4er4
должны быть выделены подстроки:
2
435
353453
4
4
program pascal_string_array_char2;
var i , j , amount : integer; // секция обьявления переменных
inputstr , emptystr , symbol : string;
str : array [1..8] of string;
begin // начало тела программы
i := 1;
j := 1;
amount := 0;
writeln( 'input string : ' );
readln( inputstr ) ; // считывание строки
while( i <= length( inputstr ) ) do // пока истинно условие выполняем
begin
emptystr := ' ' ; // пустая строка
symbol := inputstr[ i ]; // первый символ строки
{ пока условие выполняется в пустую строку добавляем символы строки}
while( symbol >= '0' ) and ( symbol <= '9' ) and ( amount <> 8 ) do
begin
emptystr += symbol; // добавляем
i+=1; // при каждом проходе увеличиваем индекс
if( i <= length( inputstr ) ) then // если не вышли за длинну строки
symbol := inputstr[ i ] // символ равен символу строки с индексом i
else
break; // иначе завершаем
end;
i+=1; // увеличиваем при каждом проходе внешнего цикла
if ( emptystr <> ' ' ) then // если строка не пуста
begin
str[j] := emptystr; // элемент массива равен накопленной строке
j+=1; // увеличиваем индекс массива
amount += 1; // увеличиваем переменную пока она не будет равна 8
end
end;
for j := 1 to high(str) do //обходим массив с целью извлечения его значений
writeln( str[j] ); // выводим элемент массива
end.
- Log in to post comments
- 2835 reads
sergio
Fri, 07/31/2020 - 22:35
Permalink
решение с помощью подпрограмм
program pascal_function_string_array_char2; type arr = array [1..8] of string; //секция обьвления типов function filling_array( inputstr : string ): arr; //функция заполнения массива var acc_string , symbol : string; i , j , amount : integer; str_arr : arr; begin // начало тела функции i := 1; j := 1; amount := 0; readln( inputstr ) ; // считывание строки while( i <= length( inputstr ) ) do // пока истинно условие выполняем begin acc_string := ' ' ; // пустая строка symbol := inputstr[ i ]; // первый символ строки { пока условие выполняется в пустую строку добавляем символы строки} while( symbol >= '0' ) and ( symbol <= '9' ) and ( amount <> 8 ) do begin acc_string += symbol; // добавляем i+=1; // при каждом проходе увеличиваем индекс if( i <= length( inputstr ) ) then // если не вышли за длинну строки symbol := inputstr[ i ] // символ равен символу строки с индексом i else break; // иначе завершаем end; i += 1; // увеличиваем при каждом проходе внешнего цикла if ( acc_string <> ' ' ) then // если строка не пуста begin str_arr[j] := acc_string; // элемент массива равен накопленной строке j+=1; // увеличиваем индекс массива amount += 1; // увеличиваем переменную пока она не будет равна 8 end; end; filling_array := str_arr; // передача значения функции в глобальную область end; // завершение тела функции procedure conclusion_arr( out_arr : arr ); // процедура вывода массива var j : integer; begin for j := 1 to high(out_arr) do //обходим массив с целью извлечения его значений writeln( out_arr[j] ); // выводим элемент массива end; var new_arr : arr; // секция обьявления переменных begin // начало основной программы new_arr := filling_array('input string : '); // вызов функции conclusion_arr( new_arr ); // вызов процедуры readln(); end. // завершение основной программыvedro-compota
Wed, 06/17/2020 - 19:20
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)