Урок 15. Задача №9. Решение.
Primary tabs
Напишите функцию, которая определяет являются ли значения переданного массива целых чисел уникальными относительно друг друга, если среди них есть не уникальные элементы - то тогда удалите их, сдвинув значения влево, заполняя оставшиеся справа ячейки нулями.
Протестируйте работу функции на массиве из 7 случайных элементов из диапазона от 1 до 15-ти.
Например для:|1|-3|5|-3|9|5|8|получим:
|1|9|8|0|0|0|0|
type IntArr = array[1..7] of integer; function FillArray(other_arr: IntArr): IntArr; var i, min, max: integer; begin randomize(); min := 1; max := 15; for i := 1 to length(other_arr) do other_arr[i] := min + random(max); result := other_arr; end; function RebuildArr(new_arr: IntArr; a, b: integer): IntArr; var i, j: integer; otherArr: IntArr; begin i := 1; j := 1; while(i <= length(new_arr)) do begin if(i = a) then i += 1; if(i = b) then i += 1; otherArr[j] := new_arr[i]; j += 1; i += 1; end; result := otherArr; end; function UniqNumb(copy_arr: IntArr): IntArr; var i, j, k, len_arr, max_len: integer; begin i := 1; len_arr := length(copy_arr); while(i <= len_arr) do begin max_len := high(copy_arr); for j := 1 to len_arr do begin if(i = j) then continue; if(copy_arr[i] = copy_arr[j]) then begin copy_arr := RebuildArr(copy_arr, i, j); copy_arr[max_len] := 0; max_len -= 1; copy_arr[max_len] := 0; max_len -= 1; len_arr -= 2; i := 0; break; end; end; i += 1; end; result := copy_arr; end; procedure ShowArray(arr_first: IntArr); var i: integer; begin writeln('arr = '); for i := 1 to length(arr_first) do write('|', arr_first[i], '|', ' '); writeln(); end; var a: integer; arr: IntArr; begin arr := FillArray(arr); write('Original '); ShowArray(arr); writeln(); arr := UniqNumb(arr); write('Correct original '); ShowArray(arr); readln(); // Удержание консоль end.// Завершение программы
- Log in to post comments
- 1574 reads