Глава 17.Задача №3.Пользователь вводит произвольную строку, посчитайте количество чисел в ней - тех, что больше 125.
Primary tabs
Пользователь вводит произвольную строку, посчитайте количество чисел в ней - тех, что больше 125. Например, в строке:
123ret34#2145esrt5
такое число только одно и это:
2145
(сначала выделите эти числа из строки и запишите их в массив (of integer), а затем уже посчитайте число тех, что больше 125)
program pascal_17_3;
var i , j , int , code , len_arr : integer; //секция обьявления переменных
symbol , str , empty_str : string;
arr : array[1..10] of integer;
begin // начало программы
i := 1;
j := 1;
len_arr := 0;
writeln( 'Input string : ' );
readln( str ) ; // считывание строки
while( i <= length( str ) ) do // внешний while
begin
empty_str := ' '; // пустая строка
symbol := str[i]; // символу присваиваем значение элемента строки
while( symbol >= '0' ) and ( symbol <= '9' ) do // пока верно делаем
begin
empty_str += symbol; // добавляем в пустую стоку
i += 1; // увеличиваем индекс
if( i <= length( str ) ) then // если не вышли за длинну строки
symbol := str[i] // присваиваем элемент с большим индексом
else
break; // если вышли за длинну то завершаем
end;
i += 1; // увеличиваем при каждом проходе
if( empty_str <> ' ' ) then // если что то накопили
begin
val( empty_str , int , code ); // преобразуем в числовое значение
arr[j] := int; // присваиваем элементу массива
j += 1; // увеличиваем индекс массива
len_arr += 1; // считаем длинну массива
end
end;
for j := 1 to len_arr do // обходим массив
begin
if( arr[j] ) > 125 then // если больше 125 то выводим
write( arr[j] , ' ' );
end;
readln();
end.
- Log in to post comments
- 6105 reads
vedro-compota
Mon, 06/08/2020 - 09:34
Permalink
декомпозируйте решение на
декомпозируйте решение на подпрограммы
_____________
матфак вгу и остальная классика =)
sergio
Sat, 06/27/2020 - 20:48
Permalink
поправил
program pascal_17_3; type arr = array[1..10] of integer; // секция обьявления типов function filling_array( str: string; in_arr: arr ): arr;// заполнение массива var symbol, empty_str : string; i, j, int, code: integer; begin // начало тела функции i := 1; j := 1; while( i <= length( str ) ) do // внешний while begin empty_str := ' '; // пустая строка symbol := str[i]; // символу присваиваем значение элемента строки while( symbol >= '0' ) and ( symbol <= '9' ) do // пока верно делаем begin empty_str += symbol; // добавляем в пустую стоку i += 1; // увеличиваем индекс if( i <= length( str ) ) then // если не вышли за длинну строки symbol := str[i] // присваиваем элемент с большим индексом else break; // если вышли за длинну то завершаем end; i += 1; // увеличиваем при каждом проходе if( empty_str <> ' ' ) then // если что то накопили begin val( empty_str , int , code ); // преобразуем в числовое значение in_arr[j] := int; // присваиваем элементу массива j += 1; // увеличиваем индекс массива end end; filling_array := in_arr; end; // завершение тела функции procedure print_line( element, count_in : integer );//вывод очередного значения begin // начало тела процедуры write( 'value ', count_in,'= ', element, ' ' ); end; // завершение тела процедуры procedure conclusion( out_arr : arr ); // вывод массива var j , count : integer; begin // начало тела процедуры count := 0; for j := low( out_arr ) to high( out_arr ) do // обходим массив begin if( out_arr[j] ) > 125 then // если больше 125 begin count += 1; print_line( out_arr[j] ,count ); end; end; end; // завершение тела процедуры var new_arr : arr; //секция обьявления переменных str_in : string; begin // начало программы writeln( 'Input string : ' ); readln( str_in ) ; // считывание строки new_arr := filling_array( str_in, new_arr ); conclusion( new_arr ); end.vedro-compota
Wed, 06/24/2020 - 19:41
Permalink
procedure conclusion( out_arr
-- переделать на функцию, которая принимает исходный массив и значение минимума для фильтрации и возвращает отфильтрованный массив.
_____________
матфак вгу и остальная классика =)
vedro-compota
Wed, 06/24/2020 - 21:02
Permalink
отступление
проверьте будет ли работать:
_____________
матфак вгу и остальная классика =)
sergio
Sat, 06/27/2020 - 20:49
Permalink
поправил
program pascal_17_3; type arr = array[1..10] of integer; // секция обьявления типов function filling_array( str: string; in_arr: arr ): arr;// заполнение массива var symbol, empty_str : string; i, j, int, code: integer; begin // начало тела функции i := 1; j := 1; while( i <= length( str ) ) do // внешний while begin empty_str := ' '; // пустая строка symbol := str[i]; // символу присваиваем значение элемента строки while( symbol >= '0' ) and ( symbol <= '9' ) do // пока верно делаем begin empty_str += symbol; // добавляем в пустую стоку i += 1; // увеличиваем индекс if( i <= length( str ) ) then // если не вышли за длинну строки symbol := str[i] // присваиваем элемент с большим индексом else break; // если вышли за длинну то завершаем end; i += 1; // увеличиваем при каждом проходе if( empty_str <> ' ' ) then // если что то накопили begin val( empty_str , int , code ); // преобразуем в числовое значение in_arr[j] := int; // присваиваем элементу массива j += 1; // увеличиваем индекс массива end end; filling_array := in_arr; end; // завершение тела функции procedure print_line( element, count_in, number : integer );//вывод очередного значения begin // начало тела процедуры write( count_in, ' value more ',number,' = ', element, ', ' ); end; // завершение тела процедуры function conclusion( out_arr : arr; number: integer ): arr; // вывод массива var j , count : integer; begin // начало тела процедуры count := 0; for j := low( out_arr ) to high( out_arr ) do // обходим массив begin if( out_arr[j] ) > number then // если больше 125 begin count += 1; print_line( out_arr[j] ,count, number ); end; end; end; // завершение тела процедуры var new_arr : arr; //секция обьявления переменных str_in : string; begin // начало программы writeln( 'Input string : ' ); readln( str_in ) ; // считывание строки new_arr := filling_array( str_in, new_arr ); conclusion( new_arr, 125 ); end.vedro-compota
Wed, 07/01/2020 - 20:17
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)