¬ (A v B ) /\ ¬ C =(раскроем скобки по закону де-Моргана)=
= ¬A /\ ¬B /\ ¬ C =(доказательство этого перехода - через таблицу истинности)= ¬(A v B v C)
Доказательство последнего равенства:
1) ¬A /\ ¬B /\ ¬ C
А B C F
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0
2) ¬(A v B v C)
Так как таблицы истинности совпали, последний переход равносилен.
ответ: ¬(A v B v C)
program zzz;
var
max, k, a: integer;
s: string;
begin
assign(input, 'zad_24.txt');
readln(s);
a := 1;
max := 1;
for var i := 2 to length(s) do
if (s[i] = s[i - 1]) and (s[i] = 'C') then
k := k + 1;
if max > i then
max := i;
end
else
writeln(a);
end.
Объяснение:
Циклическую переменную i стоит использовать только в самом for, т. е. она выполняет функцию счетчика.
Я заменил переменную i вне цикла на переменную a.
Что касается ошибки "Параметр цикла for должен описываться в заголовке цикла" - for var i := 2 to length(s) do
Не нужно циклическую переменную указывать глобально в var
¬ (A v B ) /\ ¬ C =(раскроем скобки по закону де-Моргана)=
= ¬A /\ ¬B /\ ¬ C =(доказательство этого перехода - через таблицу истинности)= ¬(A v B v C)
Доказательство последнего равенства:
1) ¬A /\ ¬B /\ ¬ C
А B C F
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0
2) ¬(A v B v C)
А B C F
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0
Так как таблицы истинности совпали, последний переход равносилен.
ответ: ¬(A v B v C)
program zzz;
var
max, k, a: integer;
s: string;
begin
assign(input, 'zad_24.txt');
readln(s);
a := 1;
max := 1;
for var i := 2 to length(s) do
if (s[i] = s[i - 1]) and (s[i] = 'C') then
begin
k := k + 1;
if max > i then
max := i;
end
else
max := 1;
writeln(a);
end.
Объяснение:
Циклическую переменную i стоит использовать только в самом for, т. е. она выполняет функцию счетчика.
Я заменил переменную i вне цикла на переменную a.
Что касается ошибки "Параметр цикла for должен описываться в заголовке цикла" - for var i := 2 to length(s) do
Не нужно циклическую переменную указывать глобально в var