Задача 9 Урок 15
Primary tabs
Заполните массив из 5 элементов случайными числами из любого диапазона.
Далее пользователь вводит в цикле значения от 1 до 5 -- удаляйте из массива
очередной элемент с позиции очередного введенного пользователем числа,
сдвигая оставшиеся элементы массива влево, заполняя то, что справа
нулями. Распечатывайте промежуточной состояние массива, после каждого удаления.
type myArr = array[1..5] of integer;
var a: myArr;
i, n, k: integer;
begin
i := 1;
randomize();
for i:=low(a) to high(a) do // наполняем и выводим в консоль
begin
a[i] := random(11) - 5;
write(a[i], ' ');
end;
writeln();
writeln('Vvedite chislo ot 1 do 5'); //чтобы лишних ифов в цикле вайл не делать
readln(n);
while (n <= 5) and (n >= 1) and (k <> 5) do
begin
for i := n to high(a) do // убираем элемент, затираем данные, при этом a[9] затираем данными извне массива.
a[i] := a[i + 1];
k := 0;
for i:=low(a) to high(a) do // выводим в консоль и проверяем нули
begin
write(a[i], ' ');
if a[i] = 0 then // проверяем нули
inc(k);
end;
writeln();
if k <> 5 then //чтобы не запрашивать n при всех нулях и не обходить все позиции
begin
writeln('Vvedite chislo ot 1 do 5');
readln(n);
end;
end;
writeln('THE END');
readln();
end.
КОНСОЛЬ
-2 4 3 -4 -3 Vvedite chislo ot 1 do 5 3 -2 4 -4 -3 0 Vvedite chislo ot 1 do 5 2 -2 -4 -3 0 0 Vvedite chislo ot 1 do 5 1 -4 -3 0 0 0 Vvedite chislo ot 1 do 5 5 -4 -3 0 0 0 Vvedite chislo ot 1 do 5 2 -4 0 0 0 0 Vvedite chislo ot 1 do 5 1 0 0 0 0 0 THE END
- Log in to post comments
- 2348 reads
vedro-compota
Sun, 11/14/2021 - 13:28
Permalink
оформить сдвиг как
оформить сдвиг как подпрограмму
_____________
матфак вгу и остальная классика =)
Vitaliy123
Sun, 11/14/2021 - 15:14
Permalink
Сдвиг как подпрограмма
type myArr = array[1..5] of integer; var a: myArr; n, k, i: integer; function f1(arr: array of integer; m: integer): myArr; //функция сдвига var j: integer; begin for j := (m - 1) to (high(arr)-1) do // убираем элемент begin arr[j] := arr[j + 1]; //затираем данные end; arr[high(arr)] := 0; result := arr; end; begin i := 1; randomize(); for i:=low(a) to high(a) do // наполняем и выводим в консоль begin a[i] := random(11) - 5; write(a[i], ' '); end; writeln(); writeln('Vvedite chislo ot 1 do 5'); //чтобы лишних ифов в цикле вайл не делать readln(n); while (n <= 5) and (n >= 1) and (k <> 5) do begin k := 0; a := f1(a, n); for i:=low(a) to high(a) do // выводим в консоль и проверяем нули begin write(a[i], ' '); if a[i] = 0 then // проверяем нули inc(k); end; writeln(); if k <> 5 then //чтобы не запрашивать n при всех нулях begin writeln('Vvedite chislo ot 1 do 5'); readln(n); end; end; writeln('THE END'); readln(); end.КОНСОЛЬ
vedro-compota
Sun, 11/21/2021 - 13:03
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)