Задача 12 Урок 15
Primary tabs
12. Пусть есть процедура, которая умеет сдвигать массив влево на 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().
type newArr = array [1..5] of integer; var randArr: newArr; userArr: array[1..3] of integer; min, max, i, x: integer; procedure shiftArr(var promArr: newArr; k: integer); var j: integer; begin for j := k to (high(promArr) - 1) do promArr[j] := promArr[j + 1]; promArr[high(promArr)] := 0; end; begin min := 1; max := 10; randomize(); for i := low(randArr) to high(randArr) do begin randArr[i] := min + random(max - min + 1); write(randArr[i], ' | '); end; writeln(); for x := low(userArr) to high(userArr) do begin write('Введите ', x, ' целое число: '); readln(userArr[x]); end; for x := low(userArr) to high(userArr) do for i := low(randArr) to high(randArr) do begin if (userArr[x] = randArr[i]) then begin shiftArr(randArr, i); // i := (i -1); как откатить на один виток цикла, чтобы сравнивалось с предыдущим значением i end; end; for i := low(randArr) to high(randArr) do write(randArr[i], ' | '); readln(); end.
Вывод консоли:
3 | 5 | 5 | 5 | 10 | Введите 1 целое число: 5 Введите 2 целое число: 1 Введите 3 целое число: 2 3 | 5 | 10 | 0 | 0 |
- Log in to post comments
- 410 reads
iiekka
Wed, 11/16/2022 - 03:45
Permalink
Исправлено