У i 7". Побудуйте математичну модель і створіть проєкт для обчислення значення виразу (3 * a — b) * (a + 2 * 6). Збережіть проєкт у папці з іменем Завдан- b ня 6.5.7, створеній у вашій папці. 8°. Побудуйте математичну модель і створіть проєкт для обчислення Lazarus
N = 15;
Var
A:array[1..N] of integer;
i,
Max, Min:integer; // Тут будут храниться НОМЕРА Min и Max
Begin
Randomize;
{Заполнение и вывод массива}
Write('Исходный массив:');
For i:= 1 to N do
Begin
A[i]:=random(21)-10;
Write(' ',A[i])
End;
WriteLn;
{Поиск максимума и минимума}
Max:=1;
Min:=1;
// Проверять начинаем со второго элемента,
// потому, что в первую очередь будем сравнивать с первым
// (т.к. Max = 1 и Min = 1)
For i:= 2 to N do
Begin
if A[i]>A[Max] then Max:=i;
if A[i]<A[Min] then Min:=i;
// Поскольку тут стоят знаки строго больше и строго меньше,
// будут найдены только первый встретившийся максимум
// и первый встретившийся минимум.
// Если бы стояли знаки больше или равно(>=) и меньше или равно(<=),
// то найдены были бы последние встретившиеся Max и Min
// То есть, например, в первом случае в массиве:
// 1 2 3 4 5 2 5 1
// были бы найдены: Min = 1, Max = 5
// во втором случае в том же массиве были бы найдены:
// Min = 8, Max = 7
End;
// Сколько элементов между пятым и первым ? - три.
// Между восьмым и седьмым ? - ноль
// Общая формула:
// Искомое кол-во элементов = |НомерМаксимума-НомерМинимума|-1
// Значение берём по модулю потому,
// что как минимальный элемент может стоять после максимального,
// так и максимальный после минимального
// То есть без модуля было бы так: 5-1-1 = 3, 7-8-1 = -2
// А с модулем так: |5-1|-1 = 3, |7-8|-1 = 0
// Формула может выдать -1 в том случае, когда минимум равен максимум,
// то есть когда все элементы массива равны.
// На этот случай можно вывести соответствующее сообщение, или просто вывести ноль.
WriteLn('Max = A[',Max,'] = ',A[Max]);
WriteLn('Min = A[',Min,'] = ',A[Min]);
i:=Abs(Max-Min)-1;
// перепишем сюда получившееся значение,
// чтобы потом ещё раз его не высчитывать
if i = -1 then WriteLn('Все элементы массива равны.')
else WriteLn('Кол-во элементов между Max и Min = ',i);
End.
Пример:
Исходный массив: 5 -2 -5 5 6 -7 7 -6 6 3 -4 6 -8 7 1
Max = A[7] = 7
Min = A[13] = -8
Кол-во элементов между Max и Min = 5
На то, чтобы передать этот файл из пункта Б в пункт В, необходимо потратить 5 * 2^27 / 2^20 = 5 * 2^7 = 640 секунд
Так как вся передача заняла 13 минут = 780 секунд, то данные из пункта Б в пункт В начали передавать через 780 - 640 = 140 секунд после начала передачи из пункта А (это не противоречит условию, "затем" определяет только порядок, а не то, что из пункта Б в пункт В начали передавать сразу же, как в пункт Б пришёл первый бит от А).