задача 9 урок 15
Primary tabs
Заполните массив из 5 элементов случайными числами из любого диапазона.
Далее пользователь вводит в цикле значения от 1 до 5 -- удаляйте из массива очередной элемент с позиции очередного введенного пользователем числа, сдвигая оставшиеся элементы второго массива влево, заполняя то, что справа нулями. Распечатывайте промежуточной состояние массива, после каждого удаления.Цикл должен работать до тех пор, пока в массиве не останется ненулевых элементов или пока пользователь не введет число большее чем 5 или меньшее чем 1.
Например:
|1|3|7|5|4| // исходный массив 3 // ввод пользователя |1|3|5|4|0| // промежуточный результат 3 // ввод пользователя |1|3|4|0|0| // промежуточный результат 2 // ввод пользователя |1|4|0|0|0| // промежуточный результат 1 // ввод пользователя |4|0|0|0|0| // промежуточный результат 1 // ввод пользователя |0|0|0|0|0| // промежуточный результат // Cообщение о завершении, т.к. все элементы удалены
-- в данном случае программа завершилась, так как удалены все элементы.
Если бы пользователь ввел число 10 или -5 - то это тоже была бы ситуация для завершения, но элементы в массиве ещё бы остались.
РЕШЕНИЕ:
program task_9_lesson_15;
type arr = array[1..5] of integer;
function sdvig(n : integer; ar : arr) : arr; // функция сдвига
var i: integer;
begin
for i := n to high(ar) do
begin
if (i < high(ar)) then
ar[i] := ar[i + 1]
else
ar[i] := 0;
end;
result := ar;
end;
procedure writeArray(ar : arr); // процедура которая будет печатать наш массив
var i: integer;
begin
for i := low(ar) to high(ar) do
write(ar[i], ' ');
writeln();
end;
procedure su(ar1, ar2: arr; var n: boolean); // процедура сравнения массивов
var i: integer;
begin
n := true;
for i := 1 to high(ar1) do
if ar1[i] <> ar2[i] then
n := false;
end;
var a, b: array[1..5] of integer;
i, n: integer;
comp: boolean;
begin
randomize();
comp:= true; // изначально массивы равны
for i := low(b) to high(b) do
b[i] := 0;
for i := low(a) to high(a) do
a[i] := -10 + random(20);
writeArray(a);
su(a, b, comp); // первое сравнение
while comp = false do // пока массив #1 не равен массиву #2 из 0-ей делаем сдвиг
begin
write('Which element do you want to delete? : ');
readln(n);
if ((n >= 1) and (n <= 5)) then
begin
a := sdvig(n, a);
writeArray(a);
su(a, b, comp);
end
else
break;
end;
writeln('VSE ELEMENTI UDALENI');
readln()
end.КОНСОЛЬ:
8 -5 6 -7 2 Which element do you want to delete? : 5 8 -5 6 -7 0 Which element do you want to delete? : 2 8 6 -7 0 0 Which element do you want to delete? : 1 6 -7 0 0 0 Which element do you want to delete? : 2 6 0 0 0 0 Which element do you want to delete? : 1 0 0 0 0 0 VSE ELEMENTI UDALENI
- Log in to post comments
- 1074 reads