Задача 11 урок 15
Primary tabs
Заполнить массив из 9 элементов случайными числами из диапазона от нуля до N, и затем удалите из этого массива все элементы равные M, причем удаление необходимо производить "сдвигом" влево оставшихся элементов на позиции элементов, совпавших с M.
Решить двумя способами:1) Любым
2) Провести операцию сдвига за одно прочтение исходного массива (для этого нам потребуется еще один массив, где мы будем хранить какие-то значения)
program lesson_15;
type
list11 = array [1..9] of integer;
var
a, new_a: list11;
count, del, max: integer;
procedure random_list11(max: integer; var a: list11);
var min, count: integer;
begin
randomize();
min := 0;
count := 1;
for count:=low(a) to high(a) do
a[count] := min + random(max - min + 1);
writeln('Now array is:');
for count:= low(a) to high(a) do
write(a[count], ' ');
writeln();
end;
function del_and_shift(del: integer; var a: list11): list11;
var
new_a: array [1..9] of integer;
i, count: integer;
begin
count := 0;
for i := low(a) to high(a) do
begin
if a[i] = del then
begin
new_a[i - count] := a[i];
count += 1;
end
else
new_a[i - count] := a[i];
end;
count -= 1; // что по костылям...
while count >= 0 do
begin
new_a[9 - count] := 0;
count := count - 1;
end;
result := new_a;
end;
begin
writeln('Please, enter max number of random:');
readln(max); // задаем максимальное значение для чисел в массиве
random_list11(max, a); // процедура заполнением случайными числами наш массив
writeln('Now enter the number you want to del:');
readln(del); // какое число удалить
new_a := del_and_shift(del, a); // функция удаления и сдвига значений при помощи переписывания нужных значений из старого массива в новый
writeln('Now array is:');
for count:= low(new_a) to high(new_a) do
write(new_a[count], ' ');
writeln();
readln();
end.- Log in to post comments
- 1302 reads
vedro-compota
Fri, 06/16/2023 - 00:06
Permalink
есть варианты, когда решение
есть варианты, когда решение работает не верно, скинул скриншот в личку
_____________
матфак вгу и остальная классика =)