Урок 15 Задача 11
Primary tabs
Заполнить массив из 9 элементов случайными числами из диапазона от нуля до N
, и затем удалите из этого массива все элементы равные M
, причем удаление необходимо производить "сдвигом" влево оставшихся элементов на позиции элементов, совпавших с M
.
Решить двумя способами:1) Любым
2) Провести операцию сдвига за одно прочтение исходного массива (для этого нам потребуется еще один массив, где мы будем хранить какие-то значения)
program u15_z11; // 1 вариант решения
type
myArr1 = array[1..9] of integer;
var m,i: integer;
a: myArr1;
min,max,n,z: integer;
begin
randomize();
min := 0;
max := n;
n := 10;
z:=0;
for i := low(a) to high(a) do
begin
a[i] := min + random(max - min +1);
write(a[i],' ');
end;
writeln();
m:=4; // например если m равно 4
for i := low(a) to high(a) do
begin
if (a[i] <> m) then
write(a[i],' ')
else
if (a[i] = m) then
begin
if a[9] = z then
a[9]:=0;
a[i]:= a [i + 1];
z:=z+1;
end;
end;
readln();
end.
program project1; // 2 вариант решения с двумя массивами
type
myArr1 = array[1..9] of integer;
myArr2 = array[1..9] of integer;
var m,i,j,z: integer;
a: myArr1;
b: myArr2;
min,max,n: integer;
begin
randomize();
min := 0;
n := 10;
max := n;
j := 1;
m := 4; // например если m равно 4
z := 0;
for i := low(a) to high(a) do
begin
a[i] := min + random(max - min +1);
write(a[i],' ');
end;
writeln();
i := 1;
while (j <= 9) do
begin
b[j] := a[i];
if (i > 9) then
break;
if (a[i] = m) then
begin
b[j]:= a [i+1];
i := i+1;
z := z + 1;
end;
j := j + 1;
i := i + 1;
end;
for i := low(b) to (j - 1) do
begin
write(b[i],' ');
end;
readln();
end. - Log in to post comments
- 323 reads