Задача 11 урок 15
Primary tabs
Заполнить массив из 9 элементов случайными числами из диапазона от нуля до N, и затем удалите из этого массива все элементы равные M, причем удаление необходимо производить "сдвигом" влево оставшихся элементов на позиции элементов, совпавших с M.
Решить двумя способами:1) Любым
2) Провести операцию сдвига за одно прочтение исходного массива (для этого нам потребуется еще один массив, где мы будем хранить какие-то значения)
program lesson_15; type list11 = array [1..9] of integer; var a, new_a: list11; count, del, max: integer; procedure random_list11(max: integer; var a: list11); var min, count: integer; begin randomize(); min := 0; count := 1; for count:=low(a) to high(a) do a[count] := min + random(max - min + 1); writeln('Now array is:'); for count:= low(a) to high(a) do write(a[count], ' '); writeln(); end; function del_and_shift(del: integer; var a: list11): list11; var new_a: array [1..9] of integer; i, count: integer; begin count := 0; for i := low(a) to high(a) do begin if a[i] = del then begin new_a[i - count] := a[i]; count += 1; end else new_a[i - count] := a[i]; end; count -= 1; // что по костылям... while count >= 0 do begin new_a[9 - count] := 0; count := count - 1; end; result := new_a; end; begin writeln('Please, enter max number of random:'); readln(max); // задаем максимальное значение для чисел в массиве random_list11(max, a); // процедура заполнением случайными числами наш массив writeln('Now enter the number you want to del:'); readln(del); // какое число удалить new_a := del_and_shift(del, a); // функция удаления и сдвига значений при помощи переписывания нужных значений из старого массива в новый writeln('Now array is:'); for count:= low(new_a) to high(new_a) do write(new_a[count], ' '); writeln(); readln(); end.
- Log in to post comments
- 834 reads
vedro-compota
Fri, 06/16/2023 - 00:06
Permalink
есть варианты, когда решение
есть варианты, когда решение работает не верно, скинул скриншот в личку
_____________
матфак вгу и остальная классика =)