Задача 13 Урок 15
Primary tabs
Пусть есть процедура, которая умеет сдвигать массив влево на 1 элемент,
начиная с указанного символа (устанавливая последний элемент равным нулю):
type 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 5 6 8 9
Числа пользователя:
2
4
5
Ответ:
1 6 8 9 0
Пример 2:
Исходный массив: 1 5 6 8 9
Числа пользователя:
8
4
6
Ответ:
1 5 9 0 0
Пример 3:
Исходный массив: 1 5 6 5 9
Числа пользователя:
5
4
6
Ответ:
1 9 0 0 0
type
myArr1 = array[1..5] of integer;
myArr2 = array[1..3] of integer;
var
a: myArr1;
b: myArr2;
min, max, i : integer;
procedure sdvig(var a : myArr1; n:integer);
var i : integer;
begin
i := 1;
while i <= high(a) do //первый цикл для обхода
if a[i] = n then
for i := i to high(a) do //второй цикл для сдвига
a[i] := a[i+1]
else
i += 1;
end;
begin
randomize();
min := 1;
max := 15;
for i:=low(a) to high(a) do
a[i] := min + random(max - min + 1);
write('Числа массива a до операции: ');
for i := low(a) to high(a) do
write(a[i], ' ');
writeln;
write('Введите числа массива b: ');
for i := low(b) to high(b) do
read(b[i]);
writeln;
for i := low(b) to high(b) do
sdvig(a, b[i]);
write('Числа массива после операции: ');
for i := low(a) to high(a) do
write(a[i], ' ');
writeln;
write('Программа завершила свою работу');
readln();readln();
end. - Log in to post comments
- 531 reads