Напишите программу, которая запрашивает 5 целых чисел, и определяет, сколько среди них нечётных. Числа подаются одной строкой через пробел. Sample Input 1: 8 11 13 7 -23
Const n = 5; m = 5; var a:array[1..n,1..m] of integer; i,j,s:integer; begin //Для теста заполним массив сл.числами for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(21)-10; write(a[i,j]:4); end; writeln;writeln; end; //сумма всех элементов массива for i:=1 to n do for j:=1 to m do s:=s+a[i,j]; writeln('сумма всех элементов массива: ',s); //сумма каждой строки for i:=1 to n do begin s:=0; for j:=1 to m do begin s:=s+a[i,j]; end; writeln ('Строка: ',i,' сумма:',s); end; end.
m & 1 - это битовая конъюнкция. Результатом будет 1, если m нечетное, и 0, если m - четное (то есть, содержит или не содержит соответствующий разряд)
Выражение вида T ? X : Y, где T - логическое высказывание, принимает значение X, если T истинно, и Y, если T ложно.
Соответственно, i = (m & 1) == 1 ? m : m + 1 означает, что
если m нечетное, то i = m
если четное, i = m+1 (то есть, первое нечетное число после m)
i += 2 означает, что цикл идет с шагом, соответственно, рассматриваются только нечетные числа.