Динамический массив - Pascal (9152)
Формулировка задачи:
Даны действительные числа а1,..аn
Получим:min(a1*a16,a2*a17,..,a15*an)
заранее большое спасибо=))))
Решение задачи: «Динамический массив»
textual
Листинг программы
uses crt; Type TTmas=array[1..1] of real; Tmas=^TTmas; const n=30; var a:Tmas; i,i1,i2,k:integer; mn:real; begin clrscr; randomize; GetMem(a,SizeOf(TTmas)*n); writeln('Массив:'); for i:=1 to n do begin a^[i]:=10*random; write(a^[i]:0:1,' '); end; writeln; writeln; k:=n div 2; mn:=a^[1]*a^[k+1]; i1:=1;i2:=k+1; for i:=1 to k do if a^[i]*a^[k+i]<mn then begin mn:=a^[i]*a^[k+i]; i1:=i; i2:=k+i; end; write('Минимальное произведение имеют элементы a[',i1,'] и a[',i2,']=',mn:0:1); FreeMem(a,SizeOf(TTmas)*n); readln end.
Объяснение кода листинга программы
- В начале кода подключается библиотека crt, которая используется для работы с памятью в языке Pascal.
- Определяется тип данных TTmas, который представляет собой динамический массив из 1 элемента типа real.
- Определяется константа n, которая представляет собой количество элементов в массиве.
- Определяется переменная a типа Tmas, которая будет представлять собой динамический массив.
- Определяются переменные i, i1, i2 и k, которые будут использоваться для итерации по массиву и поиска минимального произведения.
- Выполняется инициализация случайной генерации чисел в диапазоне от 0 до 99.
- Выделяется память под массив a с помощью функции GetMem. Размер массива определяется как произведение размера одного элемента на количество элементов.
- Выводится сообщение о содержимом массива. Для каждого элемента выполняется вывод его значения.
- Вычисляется значение mn, которое будет являться минимальным произведением двух элементов массива.
- Вычисляются индексы i1 и i2, которые будут использоваться для поиска минимального произведения.
- Запускается цикл, в котором проверяется условие: если произведение a^[i] * a^[k+i] меньше mn, то обновляется значение mn, а также индексы i1 и i2.
- После завершения цикла выводится сообщение с минимальным произведением и его индексами.
- Освобождается память, выделенная под массив a, с помощью функции FreeMem.
- Выводится сообщение
readln
. - Выполняется ожидание ввода пользователя.