Урок 15 Задача 13
Primary tabs
Пусть есть процедура, которая умеет сдвигать массив влево на 1 элемент, начиная с указанного символа (устанавливая последний элемент равным нулю):
▶
?
1
2
3
4
5
6
7
8
9type newArr = array [1..5] of integer;
procedure shiftArr(var promArr: newArr; k:integer);
var j:integer;
begin
for j:=k to 4 do
promArr[j]:=promArr[j+1];
promArr[high(promArr)]:=0;
end;Задача: У вас есть исходный массив случайных целых чисел из 5 элементов. Пользователь вводит три числа целых числа, сохраните их во второй массив и затем проведите сдвиг элементов исходного массива, для каждого случая их совпадения с элементами из второго массива, для сдвига используйте процедуру shiftArr().
Пример 1:
▶
?
1
2
3
4
5
6
7Исходный массив: 1 5 6 8 9
Числа пользователя:
2
4
5
Ответ:
1 6 8 9 0
type Arr= array[1..5] of integer;
var a: Arr; b: array[1..3] of integer; i,l, min,max: integer;
procedure shiftArr(var promArr: Arr; k:integer);
var j:integer;
begin
for j:=k to 4 do
promArr[j]:=promArr[j+1];
promArr[high(promArr)]:=0;
end;
begin
randomize();
min:=1;
max:=8;
for i:=low(a) to high(a) do
begin
a[i] := min + random(max - min + 1);
write (a[i],' ');
end;
writeln();
b[1]:=3;
b[2]:=4;
b[3]:=6;
for i:=high(a) downto low(a) do
for l:=low(b) to high(b) do
if a[i]= b[l] then
begin
if i=high(a) then
a[i]:=0
else
shiftArr (a, i);
break;
end;
for i:=low(a) to high(a) do
write(a[i],' ');
readln();
end. - Log in to post comments
- 111 reads