1, 2, 3, 4
Объяснение:
Введем обозначения:
a = X > 0, b = X > 4
Тогда выражение будет иметь вид (a + b) → b и нужно найти условия, когда оно ложно. Вместо этого, мы будем искать, когда отрицание этого условия истинно, т.е. истинность ¬( (a + b) → b)
Для начала избавимся от импликации
¬( ¬(a + b) + b)
А теперь примерим к внешнему отрицанию закон де-Моргана
(a + b) · ¬b
Раскрываем скобки
a · ¬b + b · ¬b
a · ¬b + 0
a · ¬b
Делаем обратную замену
( X > 0) · ¬(X > 4)
( X > 0) · (X ≤ 4)
Переведем это на более понятный язык:
X > 0 И X ≤ 4, или
0 < X ≤ 4
Из целых чисел сюда подойдут 1, 2, 3, 4.
// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
begin
var a:=ArrRandom(ReadInteger('n='),0,2); a.Println;
a.Sorted.Println
end.
Тестовое решение:
n= 15
1 2 0 2 2 0 2 0 2 0 0 1 0 0 2
0 0 0 0 0 0 0 1 1 2 2 2 2 2 2
2. Но, поскольку считается, что школьникам больше заняться нечем, их заставляют писать примерно в таком стиле (и время займет, и ощибок понаделают):
// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
const
nn=100;
var
i,j,n,t:integer;
a:array[1..nn] of integer;
begin
Write('n='); Read(n);
Randomize;
for i:=1 to n do begin
a[i]:=Random(3);
Write(a[i],' ')
end;
Writeln;
for i:=1 to n-1 do
for j:=1 to n-1 do
if a[j]>a[j+1] then begin
t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t
end;
for i:=1 to n do Write(a[i],' ');
Writeln;
end.
Тестовое решение:
n=15
0 1 1 0 2 1 0 2 1 2 1 0 0 2 0
0 0 0 0 0 0 1 1 1 1 1 2 2 2 2