При условии что знаком "|" обозначается операция ИЛИ, а знаком "&" - операция И, то результат будет выглядеть вот так: А - отобразит страницы, которые одновременно относятся и к контрольным, и к зачётам, и к экзаменам - самый узкий диапазон поиска. Г - отобразит страницы, относящиеся к контрольным и зачётам одновременно. Шире, чем А, но уже, чем остальные варианты. Б - отобразит страницы, относящиеся к контрольным и зачётам одновременно, а также к экзаменам; В - отобразит страницы, относящиеся к контрольным, или к зачётам, или к экзаменам. Таким образом, последовательность запросов будет выглядеть следующим образом: А - Г - Б - В. Более наглядное объяснение вывода страниц на картинке.
// PascalABC.NET 3.2, сборка 1437 от 03.05.2017 // Внимание! Если программа не работает, обновите версию!
function GetDiagNeganives(a:array[,] of integer):sequence of integer; begin for var i:=0 to a.RowCount-1 do if a[i,i]<0 then yield(i) end;
function GetSumm(a:array[,] of integer; t:sequence of integer):integer; begin Result:=0; foreach var e in t do Result+=a.Row(e).Sum end;
procedure MatrixWrite(a:array[,] of integer); begin var n:=a.RowCount; Writeln('*** Исходная матрица [',n,',',n,'] ***'); a.Println(4); Writeln(4*a.ColCount*'-') end;
begin var n:=ReadInteger('Количество строк/столбцов в матрице:'); var a:=MatrRandom(n,n,-99,99); MatrixWrite(a); var s:=GetDiagNeganives(a); Writeln('S=',GetSumm(a,s)) end.
Var
i,k,s:integer;
begin
for i:=0 to 1000 do
if (i mod 5=0) and (i mod 10=0) then
begin
inc(k);
s:=s+i;
end;
write('Сумма=',s,' количество=',k);
end.