Написать функцию которая возвращает True, если есть пара чисел, которая удовлетворяет условие - Pascal
Формулировка задачи:
Есть массив:
Заполненный случайными числами от -32,768 до 32,767.
Нужно написать функцию которая возвращает True, если есть пара чисел, которая удовлетворяет условие:
Если такой пары нет, то False
Пример:
-7 + 7 = 0 - True
arr : array[1..1000] of Integer;
arr[i] + arr[j] = 0;
P. S: Тупо перебирать все пары нельзя, потому что массив может быть на большее количество значений и это будет не оптимальное решение.
Решение задачи: «Написать функцию которая возвращает True, если есть пара чисел, которая удовлетворяет условие»
textual
Листинг программы
function prot(const a: array of Integer): Boolean; var i, j: Integer; begin prot:=True; for i:=Low(a) to High(a) do for j:=i+1 to High(a) do if a[i]=-a[j] then Exit; prot:=False; end;
Объяснение кода листинга программы
- Объявляется функция
protс входным параметром массивом целых чиселaи возвращаемым значением типа Boolean. - Объявляются переменные
iиjтипа Integer. - Происходит присваивание значения
Trueпеременнойprot, что является начальным предположением. - Начинается цикл: для каждого индекса
iот начала массива (Low(a)) до его конца (High(a)), выполняется вложенный цикл:- В каждой итерации вложенного цикла значение
jувеличивается на 1 относительно значенияi. - Затем проверяется условие: если значение элемента массива с индексом
iравно отрицательному значению элемента массива с индексомj, то функция возвращает значениеTrueи завершает свою работу.
- В каждой итерации вложенного цикла значение
- Если выход из функции не был выполнен внутри цикла, то функции присваивается значение
False. - Конец функции.
Этот код проверяет наличие в массиве пары чисел, таких что одно число является отрицательным образом другого. Если такая пара существует, функция возвращает
True. Если такой пары нет, то функция возвращаетFalse.