Найти строку матрицы с максимальной суммой модулей элементов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите плиз, матрицу ввел а как искать все это не знаю " Среди тех строк целочисленной матрицы которые содержат только нечетные элементы. Найти строку с максимальной суммой модулей элементов."

Решение задачи: «Найти строку матрицы с максимальной суммой модулей элементов»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
#define ROW 5
#define COLUMN 5
 
#define TRUE 1
#define FALSE 0
 
int main (int argc, char **argv) {
 
    int i, j;
    int is_odd;
    int summ, max, tmp;
    int row_numbr;
    max = 0;
 
    /* Определение марицы 5x5 */
    int matrix[ROW][COLUMN] = {
        {1, 3, 5, 7, 9},
        {6, 7, 8, 9, 10},
        {11, 13, -15, 17, 19},
        {20, 21, 22, 23, 24},
        {25, 26, 27, 28, 29}
    };
 
    for (i = 0; i < ROW; ++i) {
        is_odd = TRUE;
        summ = 0;
        for (j = 0; j < COLUMN; ++j) {
 
            /* Взять модуль числа. */
            if (matrix[i][j] < 0) {
                tmp = matrix[i][j] * -1;
            } else {
                tmp = matrix[i][j];
            }
            summ += tmp;
 
            /*
             * Сбрасывает флаг is_odd,
             * если хотя бы один элемент строки четный.
             */
            if ( !(matrix[i][j] % 2) ) {
                is_odd = FALSE;
                summ = 0;
            }
 
        }
 
        /*
         * Сохранение максимальной суммы
         * и номера строки с максимальной суммой.
         */
        if (summ > max) {
            max = summ;
            row_numbr = i;
        }
 
    }
 
    for (i = 0; i < COLUMN; ++i) {
        printf("%d ", matrix[row_numbr][i]);
    }
    printf("\nRow number: %d\n", row_numbr);
 
    return EXIT_SUCCESS;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Определяем размеры матрицы (ROW и COLUMN)
  3. Определяем значения TRUE и FALSE
  4. Создаем переменные i, j, is_odd, summ, max, tmp и row_numbr
  5. Инициализируем max значением 0
  6. Определяем матрицу 5x5
  7. Проходим по всем строкам матрицы (от 0 до ROW-1)
  8. Внутри цикла перебираем все элементы строки (от 0 до COLUMN-1)
  9. Берем модуль числа, если число отрицательное, умножаем его на -1
  10. Добавляем полученное число к сумме (summ)
  11. Если число четное, то сбрасываем флаг is_odd в FALSE и обнуляем summ
  12. После завершения внутреннего цикла, проверяем значение summ. Если оно больше max, то обновляем max и row_numbr
  13. Выводим на экран значения элементов строки с номером row_numbr
  14. Выводим номер строки с максимальной суммой
  15. Возвращаем EXIT_SUCCESS

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.364 из 5
Похожие ответы