89 2
1 44 2
0 22 2
0 11 2
1 5 2
1 2 2
0 1
1011001
По-моему так. Смотрите картинку. .
ПочитайЛогическая функция - это функция, в которой переменные принимают только два значения:логическая единица или логический ноль. Истинность или ложность сложных суждений представляет собой функцию истинности или ложности простых. Эту функцию называют булевой функцией суждений f (a, b).Любая логическая функция может быть задана с помощью таблицы истинности, в левой части которой записывается набор аргументов, а в правой части - соответствующие значения логической функции. При построении таблицы истинности необходимо учитывать порядок выполнения логических операций.Порядок выполнения логических операций в сложном логическом выражении:<span>инверсия;конъюнкция;дизъюнкция;импликация;эквивалентность.</span><span>Для изменения указанного порядка выполнения операций используются скобки.Алгоритм построения таблиц истинности для сложных выражений:<span>Определить количество строк:<span>количество строк = 2n + строка для заголовка,</span><span>n - количество простых высказываний.</span>Определить количество столбцов:<span>количество столбцов = количество переменных + количество логических операций;</span>
определить количество переменных (простых выражений);определить количество логических операций и последовательность их выполнения.Заполнить столбцы результатами выполнения логических операций в обозначенной последовательности с учетом таблиц истинности основных логических операций.</span><span><span>Пример: Составить таблицу истинности логического выражения:</span><span>D = ¬ А & (B Ú C).</span><span><u>Решение:</u> Ù</span>Определить количество строк:<span>на входе три простых высказывания: А, В, С поэтому n=3 и количество строк = 23 +1 = 9.</span>Определить количество столбцов:простые выражения (переменные): А, В, С;промежуточные результаты (логические операции):
¬ А - инверсия (обозначим через E);
B Ú C - операция дизъюнкции (обозначим через F);
а также искомое окончательное значение арифметического выражения:
D = ¬ А & (B Ú C). т.е. D = E & F - это операция конъюнкции.Заполнить столбцы с учетом таблиц истинности логических операций.<span><span>AB CE<span>F</span>E & F</span><span> 0 0 0 1 0 0</span><span> 0 0 1 1 1 1</span><span> 0 1 0 1 1 1</span><span> 0 1 1 1 1 1</span><span> 1 0 0 0 0 0</span><span> 1 0 1 0 1 0</span><span> 1 1 0 0 1 0</span><span> 1 1 1 0 1 0</span></span>
Построение логической функции по ее таблице истинности:<span>Попробуем решить обратную задачу. Пусть дана таблица истинности для некоторой логической функции
Z(X,Y):</span><span><span> X Y Z</span><span> 0 0 1</span><span> 0 1 0</span><span> 1 0 1</span><span> 1 1 0</span></span>Составить логическую функцию для заданной таблицы истинности.Правила построения логической функции по ее таблице истинности:Выделить в таблице истинности те строки, в которых значение функции равно 1.Выписать искомую формулу в виде дизъюнкции нескольких логических элементов. Число этих элементов равно числу выделенных строк.Каждый логический элемент в этой дизъюнкции записать в виде конъюнкции аргументов функции.Если значение какого-либо аргумента функции в соответствующей строке таблице равно 0, то этот аргумент взять с отрицанием.<u>Решение.</u>В первой и третьей строках таблицы истинности значение функции равно 1.Так как строки две, получаем дизъюнкцию двух элементов: ( ) V ( ).Каждый логический элемент в этой дизъюнкции запишим в виде конъюнкции аргументов функции X и Y: (X & Y) V (X & Y).Берем аргумент с отрицанием если его значение в соответствующей строке таблицы равно 0 и получаем искомую функцию:
Z (X, Y) =(¬ X & ¬Y) V (X & ¬Y).
</span></span>
<em>// PascalABC.NET 3.2, сборка 1407 от 18.03.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
function Good(s:string):boolean;
begin
var n:=s.Length;
var t:=s.ToCharArray.Distinct;
Result:=false;
foreach var c in t do begin
var k:=0;
for var i:=1 to n do
if s[i]=c then k+=1;
if k=3 then begin Result:=true; Break end
end;
end;
begin
var aw:=ReadlnString('Ведите строку:').ToWords;
var aw2:=aw.Where(w->Good(w));
aw2.Println;
end.
<u>Пример</u>
Ведите строку: корова барометр молоко длинношеее перемена соответствие кровообращение молоковоз борода
молоко длинношеее перемена соответствие кровообращение
Pascal:
const n=20;
var a: array[1..n] of integer;
max, min, i: integer;
begin
max:=-11;
min:=11;
for i:=1 to n do begin
a[i]:=random(20)-10; {или readln(a[i]); если нужен конкретный ввод}
if a[i]>max then max:=a[i];
if a[i]<min then min:=a[i];
end;
writeln((max+min)/2);
end.