DВот решение данной задачи на языке Pascal:
var
s:string;
k,n,i:longint;
begin
read(s);
k:=0;
n:=0;
for i:=1 to length(s) do
begin
if ord(s[i])=65 then k:=k+1;
if ord(s[i])=32 then
begin
if k=3 then n:=n+1;
k:=0;
end;
end;
writeln(n);
end.
Для приведения к СКНФ необходимо построить таблицу истинности, выбрать из нее строки, где функция принимает нулевое значение, а затем записать конъюнкции всех таких строк, где каждым элементом будет дизъюнкция переменных, взятых с инверсией.
<u>Перевожу на простой язык.</u>
Ищем в таблице истинности строки со значением функции, равным 0.
Для каждой такой строки берем переменные (обозначим переменную Р), и там где в колонке для Р записан 0, пишем Р, а где единица, пишем ¬Р.
Все эти Р для одной строки соединяем через ∨ и заключаем в круглые скобки. Так повторяем для каждой нулевой строки. Между скобками пишем ∧
Результаты даны во вложениях.
Цикл for будет повторяться 6 раз, значит программа на выходе выдаст 72
1)
B2 = D1 - 1 = 5 - 1 = 4
C2 = A1 + B1 = 3 + 4 = 7
D2 = C1 + D1 = 2 + 5 = 7
C2 = D2, значит B2 = A2 = 4
D1 - A1 = 5 - 3 = 2 <> 4 | -
B1 / C1 = 4 / 2 = 2 <> 4 | -
D1 - C1 + 1 = 5 - 2 + 1 = 4 | +
Ответ: 3
2)
A2 = (C1 + A1)/2 = 3
B2 = C1 - D1 = 1
C2 = A2 - D1 = 3 - 2 = 1
По диаграмме понимаем, что D2 = B2 = C2 = 1
A1 - 2 = 3 - 2 = 1 | +
Ответ: 1
3)
A2 = 225 + 225 / 15 + 15 = 225+ 15 +15 = 255
B2 = A1 + A1/(B1-10) = 225 + 225/5 = 225 + 45 = 270
C2 = 1 + 1 =2
255 + 2 + 270 =527