Урок 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
- 29 reads