Урок 22 Задача 2
Primary tabs
Есть исходный код:
var s:string; i, n: Integer; a: array[1..8] of char; begin writeln('Vvedite stroku'); readln(s); n := 1; while(n<10) do // 1-8 begin for i:=1 to Length(s) do if (s[i]>='0')and(s[i]<='9') then begin a[n]:=s[i]; inc(n); end; end; for i:=low(a) to high(a) do write(a[i],' '); // выводим массив readln(); end.Задача:
Определить, что делает эта программа (добавьте текстовое описание)
В ней есть лишние конструкции -- перепишите код оптимальным образом
{ Программа принимает от пользователя строку и
вписывает первые 8 числовых символов, встретившиеся в этой строке,
в массив из 8 элементов.
Если в строке числовых символов меньше, чем 8,
то после записи в массив последнего числового символа
происходит возврат к первому числовому символу в строке
и снова производится запись числовых символов в массив,
пока не заполнится весь массив } Переписанный код:
var
s: string;
i, n: integer;
a: array[1..8] of char;
begin
writeln('Vvedite stroku');
readln(s);
n:= 1; // счетчик массива
i:= 0; // счетчик строки
while not (n > high(a)) do // пока счетчик не выйдет за пределы массива
begin
if i = length(s) then // если строка закончилась
i:= 1 // начинаем обходить строку заново
else // если строка не закончилась
i:= i+1; // переходим к след. символу строки
if (s[i]>='0')and(s[i]<='9') then // если встретилось число
begin
a[n]:= s[i]; // записываем его в массив
write(a[n],' '); // выводим элемент массива на экран
inc(n); // увеличиваем счетчик массива
end;
end;
readln();
end. - Log in to post comments
- 957 reads
vedro-compota
Sun, 01/15/2023 - 13:14
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)