var a: array[1..n]of integer; i, j, k, max: integer;
begin max := -MaxInt; for i := 1 to n do begin write('a[', i, ']= '); readln(a[i]); if a[i] > max then max := a[i]; end; writeln(' максимальный элемент массива = ', max); //сортировка методом пузырька for i := 1 to n - 1 do for j := 1 to n - i do if a[j] < a[j + 1] then begin k := a[j]; a[j] := a[j + 1]; a[j + 1] := k end; //вывод массива for i := 1 to n do write(a[i]:4); end.
Судя по всему, здесь в цикле складываются квадраты всех нечетных чисел от m до n включительно.
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 означает, что цикл идет с шагом, соответственно, рассматриваются только нечетные числа.
Бернард pokerman
15.08.2020
Const n = 20;
var pos,neg: integer; i,k,x: integer; ev,un: integer; a,b: array [1..n] of integer;
begin for i := 1 to n do read(a[i]); k := 0; pos := 0; neg := 0; for i := 1 to n do begin ev := 0; un := 0; x := a[i]; if x <> 0 then if x > 0 then if (x < pos) or (pos = 0) then pos := x else else if (x > neg) or (neg = 0) then neg := x; x := abs(x); while x <> 0 do begin if odd(x) then un := un + 1 else ev := ev + 1; x := x div 10 end; if un = ev then begin k := k + 1; b[k] := a[i] end end;
writeln(pos,' ',neg); for i := 1 to k do write(b[i],' ') end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Нужна по информатике задать массив из 8 элементов. найти наибольший элемент массива и отсортировать по убыванию (программа паскаль)
n = 8;
var
a: array[1..n]of integer;
i, j, k, max: integer;
begin
max := -MaxInt;
for i := 1 to n do
begin
write('a[', i, ']= ');
readln(a[i]);
if a[i] > max then max := a[i];
end;
writeln(' максимальный элемент массива = ', max);
//сортировка методом пузырька
for i := 1 to n - 1 do
for j := 1 to n - i do
if a[j] < a[j + 1] then begin
k := a[j];
a[j] := a[j + 1];
a[j + 1] := k
end;
//вывод массива
for i := 1 to n do write(a[i]:4);
end.
Тестовое решение:
a[1]= 12
a[2]= 4
a[3]= 6
a[4]= 23
a[5]= 4
a[6]= 7
a[7]= 8
a[8]= 1
максимальный элемент массива = 23
23 12 8 7 6 4 4 1