3. B ∨ A
4. A & ¬(¬B ∨ C) ↔ A & B & ¬C (высказывания являются эквивалентными)
5. ложное
Объяснение:
3.
(¬A & B) ∨ (A & ¬B) ∨ (A & B) = (¬A & B) ∨ (A & B) ∨ (A & ¬B) = B & (¬A ∨ A) ∨ (A & ¬B) = B & 1 ∨ (A & ¬B) = B ∨ (A & ¬B) = (B ∨ A) & (B ∨ ¬B) = (B ∨ A) & 1 = B ∨ A
Согласно переместительному закону:
(¬A & B) ∨ (A & ¬B) ∨ (A & B) = (¬A & B) ∨ (A & B) ∨ (A & ¬B)
Согласно распределительному закону для логического сложения:
(¬A & B) ∨ (A & B) = B & (¬A ∨ A)
Согласно закону исключения третьего:
¬A ∨ A = 1
Согласно закону исключения констант для логического умножения:
B & 1 = B
Согласно распределительному закону для логического умножения:
B ∨ (A & ¬B) = (B ∨ A) & (B ∨ ¬B)
Согласно закону исключения третьего:
B ∨ ¬B = 1
Согласно закону исключения констант для логического умножения:
(B ∨ A) & 1 = B ∨ A
4.
A & ¬(¬B ∨ C) = A & ¬(¬B) & ¬C = A & B & ¬C
Согласно закону де Моргана:
¬(¬B ∨ C) = ¬(¬B) & ¬C
Согласно закону двойного отрицания:
¬(¬B) = B
A & ¬(¬B ∨ C) ↔ A & B & ¬C
(высказывания являются эквивалентными)
Составим таблицы истинности для доказательства эквивалентности (картинки)
5.
(¬(X < 5) ∨ (X < 3)) & (¬(X < 2) ∨ (X < 1)) при X = 1
Подставим значение X в высказывание, а затем определим истинность или ложность
(¬(1 < 5) ∨ (1 < 3)) & (¬(1 < 2) ∨ (1 < 1)) = (¬(истина) ∨ (истина)) & (¬(истина) ∨ (ложь)) = (ложь ∨ истина) & (ложь ∨ ложь) = истина & ложь = ложь
Общий порядок действий:
1) скобки
2) НЕ (¬, черта над выражением) - значение противоположно исходному высказыванию
3) И (&, ∧) - истинно, когда оба исходных высказывания истинны
4) ИЛИ (∨) - ложно, когда оба исходных высказывания ложны
Линейными называются программы, состоящие из простых команд (операторов).
Простыми командами (простыми указаниями алгоритма) называются команды, которые не используют условия при своем исполнении. К числу простых операторов относятся команды (операторы) присваивания, ввода и вывода, вызова вс алгоритма (подпрограммы).Чаще для определения начальных значений удобнее пользоваться командой ввода, а не командой присваивания, потому что при необходимости использования программы с другими исходными данными не приходится менять текст программы.
Если в записи алгоритма стоит команда ввода, то его выполнение прерывается и управление передается программе, которая может осуществить ввод данных. После ввода данных управление передается следующей команде алгоритма.
На языке Паскаль процедура ввода данных имеет вид:
READ (список ввода);
READLN (список ввода).
При выполнении процедур READ и READLN программа переходит в состояние ожидания ввода данных. Если в списке ввода указано несколько переменных, то их можно вводить в одной строке, отделяя друг от друга символом «пробел», или в отдельных строках (в столбик), завершая ввод каждого значения клавишей Enter.
Оператор READLN отличается от оператора READ тем, что после введения необходимого числа данных курсор перемещается на следующую строку.
Если ввод данных осуществляется с клавиатуры, то список ввода - это список переменных, т.е. последовательность имен переменных, разделенных запятыми. Если ввод осуществляется из файла, то в списке ввода первая переменная - файловая, связана с именем реального файла.
Стандартные процедуры вывода результатов вычислений используются для вывода их значений на экран, принтер или в файл. На языке Паскаль процедуры вывода имеют вид:
WRITE (список вывода);
WRITELN (список вывода).Различие между WRITE и WRITELN заключается в том, что вывод оператором WRITE начинается с текущего местоположения курсора на экране монитора и курсор после окончания вывода остается в той же строке. Оператор WRITELN выводит значения с текущего места, а затем курсор перемещается на следующую строку. Можно использовать оператор WRITELN без списка вывода для перемещения курсора на новую строку.
задача 1
program ProcArray;
procedure GetMax (A: array of Integer; var imax: Integer);
var
i: Integer;
begin
imax := Low (A);
for i := Low (A) to High (A) do
if A [i] > A [imax] then
imax := i;
end;
procedure GetMin (A: array of Integer; var imin: Integer);
var
i: Integer;
begin
imin := Low (A);
for i := Low (A) to High (A) do
if A [i] < A [imin] then
imin := i;
end;
procedure Repl (var A: array of Integer; OldValue, NewValue: Integer);
var
i: Integer;
begin
for i := Low (A) to High (A) do
if A [i] > OldValue then
A [i] := NewValue;
end;
var
A: array [0..49] of Integer;
i, imax, imin: Integer;
begin
Randomize;
for i := Low (A) to High (A) do begin
A [i] := Random (21) - 10;
Write (A [i] :3, ' ');
end;
WriteLn;
GetMax (A, imax);
WriteLn ('Максимальное значение = ', A [imax]);
GetMin (A, imin);
WriteLn ('Минимальное значение = ', A [imin]);
Repl (A, 1, 0);
WriteLn ('Замена >1 на 0');
for i := Low (A) to High (A) do
Write (A [i] :3, ' ');
ReadLn;
end.
задача 2
program ProcArray1;
procedure Multi (A: array of Integer; var Prod: LongInt);
var
i: Integer;
begin
Prod := 1;
for i := Low (A) to High (A) do
Prod := Prod * A [i];
end;
procedure Repl (var A: array of Integer; OldValue, NewValue: Integer);
var
i: Integer;
begin
for i := Low (A) to High (A) do
if A [i] > OldValue then
A [i] := NewValue;
end;
var
A: array [0..29] of Integer;
i: Integer;
p: LongInt;
begin
Randomize;
for i := Low (A) to High (A) do begin
A [i] := Random (3) + 1;
Write (A [i] :3, ' ');
end;
WriteLn;
Multi (A, p);
WriteLn ('Произведение = ', p);
Repl (A, 5, 1);
WriteLn ('Замена >5 на 1');
for i := Low (A) to High (A) do
Write (A [i] :3, ' ');
ReadLn;
end.
Объяснение:
Во задаче №2 при заполнении массива значениями больше 5 начинает возникать переполнение LongInt из за чего значение произведения становится отрицательным