Урок 15 Задача 11
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
Решение:
program u15z11;
type newArr = array [1..5] of integer;
var i,j,n:integer;
a:newArr;
b:array[1..3] of integer;
procedure shiftArr(var promArr: newArr; k:integer);
begin
for j:=k to 4 do
promArr[j]:=promArr[j+1];
promArr[high(promArr)]:=0;
end;
begin
randomize;
for i:=low(a) to high(a) do
a[i]:= random(15);
write('massiv a: ');
for i:=low(a) to high(a) do
write(a[i],' ');
writeln();
writeln('vvedite chisla:');
for i:=low(b) to high(b) do
readln(b[i]);
for i:=low(a) to high(a) do
for j:=low(b) to high(b) do
begin
if a[i] = b[j] then
shiftArr(a,i);
end;
write('new massiv a: ');
for i:=low(a) to high(a) do
write(a[i],' ');
writeln();
readln();
end.
Консоль:
massiv a: 9 11 11 5 14 vvedite chisla: 1 3 5 new massiv a: 9 11 11 14 0
- Log in to post comments
- 317 reads