Впаскале. создать одномерный массив а, состоящий из сумм столбцов матрицы в(8,5). определить в созданном массиве минимальный элемент и его местоположение, а также произведение всех элементов.
Program Task; Const m = 8; n = 5; Var A: Array [1..n] of Integer; B: Array [1..m, 1..n] of Integer; i, j, min: Integer; product: LongInt; Begin Randomize; For i := 1 To m Do For j := 1 To n Do B[i, j] := Random(20 + 1) - 10; WriteLn('Матрица B:'); For i := 1 To m Do Begin For j := 1 To n Do Write(B[i, j], ' '); WriteLn; End; For i := 1 To n Do For j := 1 To m Do A[i] := A[i] + B[j, i]; WriteLn('Массив A:'); For i := 1 To n Do Write(A[i], ' '); WriteLn; min := 1; product := 1; For i := 1 To n Do Begin product := product * A[i]; If A[i] < A[min] Then min := i; End; WriteLn('Минимальный элемент: ', A[min]); WriteLn('Его расположение: ', min); WriteLn('Произведение всех элементов: ', product); ReadLn; End.
Цикл с предусловием это такой цикл, в котором условие проверяется перед выполнением тела цикла. А цикл с постусловием - на оборот, он сначала выполнит, а потом проверит условие и если условие true, то цикл завершится.
Цикл с постусловием, можно использовать в таких ситуациях, когда надо что-то сделать и если чего-то не хватает, то сделать еще раз. Напрмер отправить письмо на email, а если не отправилось, то повторить еще 3 раза. Сначала выполнится тело цикла, в котором находятся функции отправки письма и если отправка удачная, то сообщаем until() true. Иначе тело выполнится еще и еще и еще кучу раз, если мы не задали счетчик в теле цикла, как вариант...
Цикл с предусловием можно использовать, если надо проверять какое-то значение ПЕРЕД выполнением тела цикла и тебе не важно, должно ли оно хоть раз выполниться. Например запросить пароль у пользователя. Но если пользователь уже ввёл пароль, то зачем его запрашивать? Тут можно было бы использовать while
Обозначим P,Q,A утверждение что х принадлежит соответствующему отрезку ¬А отрицание А, то есть х не принадлежит А перепишем и упростим исходную формулу P→((Q∧¬A)→P) известно что X→Y=¬X∨Y (доказывается просто, например через таблицу истинности) тогда: P→(¬(Q∧¬A)∨P) раскроем скобку ¬(Q∧¬A) с закона де Моргана (стыдно их не знать, если что это такие же основы как и таблицы истинности) P→(¬Q∨¬¬A∨P) = P→(¬Q∨A∨P) = ¬P∨¬Q∨A∨P ¬P∨P=1 то есть всегда истинно и 1∨Х=Х значит ¬P и P можно убрать остается ¬Q∨A Значит х либо принадлежит А либо не принадлежит Q для выполнения этого условия необходимо чтобы все значения Q принадлежали А, тогда минимальное А совпадает с Q ответ А=[40,77]
Const m = 8; n = 5;
Var A: Array [1..n] of Integer;
B: Array [1..m, 1..n] of Integer;
i, j, min: Integer;
product: LongInt;
Begin
Randomize;
For i := 1 To m Do
For j := 1 To n Do
B[i, j] := Random(20 + 1) - 10;
WriteLn('Матрица B:');
For i := 1 To m Do
Begin
For j := 1 To n Do
Write(B[i, j], ' ');
WriteLn;
End;
For i := 1 To n Do
For j := 1 To m Do
A[i] := A[i] + B[j, i];
WriteLn('Массив A:');
For i := 1 To n Do
Write(A[i], ' ');
WriteLn;
min := 1;
product := 1;
For i := 1 To n Do
Begin
product := product * A[i];
If A[i] < A[min] Then
min := i;
End;
WriteLn('Минимальный элемент: ', A[min]);
WriteLn('Его расположение: ', min);
WriteLn('Произведение всех элементов: ', product);
ReadLn;
End.