Решение №8 из главы 15.Напишите функцию, которая определяет являются ли значения переданного массива целых чисел уникальными от
Primary tabs
Напишите функцию, которая определяет являются ли значения переданного массива целых чисел уникальными относительно друг друга.
Протестируйте работу функции на массиве из 7 случайных элементов из диапазона от 1 до 15-ти.
Например для массива:|1|5|4|5|6|7|8|-- функция должна "сообщить", что он неуникальный
а для:|1|15|4|5|6|7|8|
program pascal_unique_array3_15_7; type b = array[1..10] of integer; // секция обьявления типов function filling_array( in_arr : b ) : b; // заполнение массива var j, min, max : integer; begin randomize; min := 5; max := 50; for j := low( in_arr ) to high( in_arr ) do begin in_arr[j] := min + random( max - 1 ); write( in_arr[j], ' ' ); end; filling_array := in_arr; // возвращаем значение функции end; { функция определения является ли массив уникальным. возвращает boolean значение } function array_value( new_arr : b ) : boolean; var count, j, i, n : integer; uniq_or_not_uniq : boolean; begin count := 0; i := 0; j := 0; while( j <= length( new_arr ) - 1 ) and ( count <> 2 ) do // выполняем пока оба условия верны begin n := new_arr[j]; // присваиваем n значение первого элемента массива count := 0; // счетчик вхождений элемента n в массив for i := 1 to length( new_arr ) do // обходим массив begin if( n = new_arr[i] ) then // если верно begin count += 1; // увеличиваем счетчик if( count = 2 ) then // если верно то массив не уникален begin uniq_or_not_uniq := false; writeln(); //writeln('not a unique array'); break; // выходим из цикла end; end; end; j += 1; // увеличиваем значение end; if( count <> 2 ) then // если не равно 2 то уникален begin uniq_or_not_uniq := true; writeln(); end; array_value := uniq_or_not_uniq; // возвращаем значение функции end; { процедура вывода значения } procedure conclusion_value( arr_value : boolean ); begin if ( arr_value ) then writeln( 'array is unique' ) else writeln( 'array is not unique' ); end; var int_array : b; value_arr : boolean; begin // основная программа int_array := filling_array( int_array ); // вызов функции value_arr := array_value( int_array ); // вызов функции conclusion_value( value_arr ); // вызов процедуры readln; end. // завершение основной программы
- Log in to post comments
- 1889 reads
vedro-compota
Wed, 07/08/2020 - 19:52
Permalink
Можно избежать сравнения
_____________
матфак вгу и остальная классика =)