алексей_Цуканов
?>

В чем ошибка записанной программы? (Разветвляющийся алгоритм с++) Строчки выделены красным

Информатика

Ответы

Yelena_Gennadevna
Судя по всему, здесь в цикле складываются квадраты всех нечетных чисел от 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 означает, что цикл идет с шагом, соответственно, рассматриваются только нечетные числа.
oleonov
Var
    a: array [,] of integer;

begin
    var n := ReadlnInteger('n = ');
    var m := ReadlnInteger('m = ');
    var rand := ReadlnInteger('Для ручного ввода нажмите 0');
    
    if rand = 0 then begin
        a := new integer[m, n];
        for var i := 0 to m-1 do
            for var j := 0 to n-1 do
                a[i, j] := ReadlnInteger('a[' + i + ',' + j + '] = ');
    end
    else a := MatrixRandom(m, n, 1, 100);
    Println(a);
    
    var b := ArrGen(n, x -> 1);
    for var i := 0 to m-1 do
        for var j := 0 to n-1 do
            if j mod 2 = 0 then
                b[j] := b[j] * a[i, j];
    
    b.Where((x, i)-> i mod 2 = 0).SortedDescending().Println();
end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

В чем ошибка записанной программы? (Разветвляющийся алгоритм с++) Строчки выделены красным
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

merx80
Aleksandrovich-Yurevna1421
vodexshop2
sochi-expert
maryariazantseva
merung
Burov1446
kengyra
Ivanovich-A.V
zhannasokortova
info7
maruska90
festjob
elena
Adabir20156806