Рассмотрим первое уравнение. В этом уравнении имеется импликация, которая принимает значение 0 для набора исходных значений 1 и 0. Значит, если x[i]=1, то для всех j>=i в решениях этого уравнения должно быть x[j]=1. Из данных рассуждений следует, что решениями первого уравнения будут (значения переменных перечислены в порядке x1, x2, x3, x4): 0000, 0001, 0011, 0111, 1111 (всего 5 наборов) Чтобы убедиться в этом можно также сделать таблицу истинности для первого уравнения (она должна содержать 2^4=16 строк). Очевидно, что второе и третье уравнение имеют по 5 аналогичных решений. Обозначим наборы значений переменных x, y и z соответственно X, Y и Z. Решением системы в этом случае будут наборы {X, Y, Z}, причем, учитывая 4-е уравнение, в состав этих наборов обязательно должен входить хотя бы один набор 0000. Пересчитываем все наборы: {0000, Y, Z} - так как для Yи Z имеется по 5 наборов, то получаем 25 решений (например, 1-й: 0000 0000 0000, 2-й: 0000 0000 0001 и т.д.) {X, 0000, Z} - для X и Z имеется, как уже показано, тоже по 5 наборов решений, но для исключения дублирования набор X=0000 исключаем из рассмотрения, значит, здесь будет 4*5 = 20 решений {X, Y, 0000} - рассуждая аналогичным образом (т.е. исключая дубликаты), получаем, что здесь добавляется ещё 4*4=16 решений. Итого: 25+20+16=61 набор.
// PascalABC.NET 3.1, сборка 1214 от 09.04.2016 procedure ex1(a:array of integer; var nn,np:integer); begin nn:=0; np:=0; for var i:=0 to a.Length-1 do if a[i]<0 then begin a[i]:=0; Inc(nn) end else if a[i]>0 then begin a[i]:=1; Inc(np) end end;
begin var a:=ArrRandom(ReadInteger('n='),-20,20); a.Println; var kp,kn:integer; ex1(a,kn,kp); Writeln('Отрицательных ',kn,', положительных ',kp); a.Println end.
// PascalABC.NET 3.1, сборка 1214 от 09.04.2016 procedure ex2(a:array of integer); begin var k:=0; for var i:=0 to a.Length-1 do if a[i]>0 then begin Print(i+1); Inc(k) end; Writeln(NewLine,'Количество положительных элементов равно ',k) end;
begin var a:=ArrRandom(ReadInteger('n='),-20,20); a.Println; ex2(a); end.
Тестовое решение: n= 13 15 -3 1 11 -20 17 -17 -12 -12 20 11 2 20 1 3 4 6 10 11 12 13 Количество положительных элементов равно 8
// PascalABC.NET 3.1, сборка 1214 от 09.04.2016 procedure ex3(a:array of integer); begin var s:=0; var k:=0; var i:=0; while i<a.Length do begin s+=abs(a[i]); Inc(k); i+=2 end; Writeln('Сумма модулей нечетных элементов равна ',s); Writeln('Их среднее арифметическое равно ',s/k) end;
begin var a:=ArrRandom(ReadInteger('n='),-20,20); a.Println; ex3(a); end.
Тестовое решение: n= 10 2 -1 -14 -12 11 13 1 17 20 6 Сумма модулей нечетных элементов равна 48 Их среднее арифметическое равно 9.6
Из данных рассуждений следует, что решениями первого уравнения будут (значения переменных перечислены в порядке x1, x2, x3, x4):
0000, 0001, 0011, 0111, 1111 (всего 5 наборов)
Чтобы убедиться в этом можно также сделать таблицу истинности для первого уравнения (она должна содержать 2^4=16 строк).
Очевидно, что второе и третье уравнение имеют по 5 аналогичных решений.
Обозначим наборы значений переменных x, y и z соответственно X, Y и Z.
Решением системы в этом случае будут наборы {X, Y, Z}, причем, учитывая 4-е уравнение, в состав этих наборов обязательно должен входить хотя бы один набор 0000.
Пересчитываем все наборы:
{0000, Y, Z}
- так как для Yи Z имеется по 5 наборов, то получаем 25 решений (например, 1-й: 0000 0000 0000, 2-й: 0000 0000 0001 и т.д.)
{X, 0000, Z}
- для X и Z имеется, как уже показано, тоже по 5 наборов решений, но для исключения дублирования набор X=0000 исключаем из рассмотрения, значит, здесь будет 4*5 = 20 решений
{X, Y, 0000}
- рассуждая аналогичным образом (т.е. исключая дубликаты), получаем, что здесь добавляется ещё 4*4=16 решений.
Итого: 25+20+16=61 набор.
procedure ex1(a:array of integer; var nn,np:integer);
begin
nn:=0; np:=0;
for var i:=0 to a.Length-1 do
if a[i]<0 then begin a[i]:=0; Inc(nn) end
else
if a[i]>0 then begin a[i]:=1; Inc(np) end
end;
begin
var a:=ArrRandom(ReadInteger('n='),-20,20);
a.Println;
var kp,kn:integer;
ex1(a,kn,kp);
Writeln('Отрицательных ',kn,', положительных ',kp);
a.Println
end.
Тестовое решение:
n= 15
-5 4 -10 15 12 -17 12 4 0 8 -2 -9 8 6 4
Отрицательных 5, положительных 9
0 1 0 1 1 0 1 1 0 1 0 0 1 1 1
// PascalABC.NET 3.1, сборка 1214 от 09.04.2016
procedure ex2(a:array of integer);
begin
var k:=0;
for var i:=0 to a.Length-1 do
if a[i]>0 then begin Print(i+1); Inc(k) end;
Writeln(NewLine,'Количество положительных элементов равно ',k)
end;
begin
var a:=ArrRandom(ReadInteger('n='),-20,20);
a.Println;
ex2(a);
end.
Тестовое решение:
n= 13
15 -3 1 11 -20 17 -17 -12 -12 20 11 2 20
1 3 4 6 10 11 12 13
Количество положительных элементов равно 8
// PascalABC.NET 3.1, сборка 1214 от 09.04.2016
procedure ex3(a:array of integer);
begin
var s:=0;
var k:=0;
var i:=0;
while i<a.Length do begin
s+=abs(a[i]); Inc(k); i+=2
end;
Writeln('Сумма модулей нечетных элементов равна ',s);
Writeln('Их среднее арифметическое равно ',s/k)
end;
begin
var a:=ArrRandom(ReadInteger('n='),-20,20);
a.Println;
ex3(a);
end.
Тестовое решение:
n= 10
2 -1 -14 -12 11 13 1 17 20 6
Сумма модулей нечетных элементов равна 48
Их среднее арифметическое равно 9.6