Двумерный массив: ко всем четным элементам массива прибавить первый элемент соответствующей строки - C (СИ)

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

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

Дан двумерный массив целых чисел: а) ко всем четным элементам массива прибавить первый элемент соответствующей строки б)все элементы массива оканчивающиеся на 2, умножить на последний элемент соответствующего столбца в)ко всем положительным элементам массива прибавить последний элемент соответствующей строки, а к остальным первый элемент такой же строки. г)все элементы массива сумма индексов которых равна 5, заменить нулями.

Решение задачи: «Двумерный массив: ко всем четным элементам массива прибавить первый элемент соответствующей строки»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define bounded_rand(min, max) ( rand() % ( (max) - (min) + 1 ) + (min) )
 
#define ROWS (6)
#define COLUMNS (10)
#define MIN_VALUE (-10)
#define MAX_VALUE (10)
 
int main(void) {
    int matrix[ROWS][COLUMNS], i, j, tmp, tmp2;
    
    srand(time(NULL));
    
    /* Дан двумерный массив целых чисел */
    for ( i = 0; i < ROWS; ++i )
        for ( j = 0; j < COLUMNS; ++j )
            matrix[i][j] = bounded_rand(MIN_VALUE, MAX_VALUE);
    
    printf("Matrix at begin:\n");
    for ( i = 0; i < ROWS; ++i ) {
        for ( j = 0; j < COLUMNS; ++j )
            printf("%3d ", matrix[i][j]);
        printf("\n");
    }
    
    /* ко всем четным элементам массива прибавить первый элемент соответствующей строки */
    printf("\nA:\n");
    for ( i = 0; i < ROWS; ++i ) {
        tmp = matrix[i][0];
        for ( j = 0; j < COLUMNS; ++j )
            if ( ! ( matrix[i][j] & 1 ) )
                matrix[i][j] += tmp;
    }
    for ( i = 0; i < ROWS; ++i ) {
        for ( j = 0; j < COLUMNS; ++j )
            printf("%3d ", matrix[i][j]);
        printf("\n");
    }
    
    /* все элементы массива оканчивающиеся на 2, умножить на последний элемент соответствующего столбца */
    printf("\nB:\n");
    for ( j = 0; j < COLUMNS; ++j ) {
        tmp = matrix[ROWS - 1][j];
        for ( i = 0; i < ROWS; ++i )
            if ( matrix[i][j] % 10 == 2 )
                matrix[i][j] *= tmp;
    }
    for ( i = 0; i < ROWS; ++i ) {
        for ( j = 0; j < COLUMNS; ++j )
            printf("%3d ", matrix[i][j]);
        printf("\n");
    }
    
    /* ко всем положительным элементам массива прибавить последний элемент соответствующей строки,
     * а к остальным первый элемент такой же строки */
    printf("\nC:\n");
    for ( i = 0; i < ROWS; ++i ) {
        tmp = matrix[i][0];
        tmp2 = matrix[i][COLUMNS - 1];
        for ( j = 0; j < COLUMNS; ++j )
            matrix[i][j] += ( matrix[i][j] > 0 ) ? tmp2 : tmp;
    }
    for ( i = 0; i < ROWS; ++i ) {
        for ( j = 0; j < COLUMNS; ++j )
            printf("%3d ", matrix[i][j]);
        printf("\n");
    }
    
    /* все элементы массива сумма индексов которых равна 5, заменить нулями */
    printf("\nD:\n");
    for ( i = 0; i < ROWS; ++i )
        for ( j = 0; j < COLUMNS; ++j )
            if ( i + j == 5 )
                matrix[i][j] = 0;
                
    for ( i = 0; i < ROWS; ++i ) {
        for ( j = 0; j < COLUMNS; ++j )
            printf("%3d ", matrix[i][j]);
        printf("\n");
    }
    
    return 0;
}

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

Код представляет собой программу, которая выполняет несколько операций над двумерным массивом целых чисел. Список действий:

  1. Сгенерировать случайные значения для всех элементов двумерного массива в диапазоне от -10 до 10.
  2. Вывести начальное значение матрицы на экран.
  3. Добавить к каждому четному элементу массива первый элемент соответствующей строки.
  4. Умножить все элементы массива, которые оканчиваются на 2, на последний элемент соответствующего столбца.
  5. Добавить к каждому положительному элементу массива последний элемент соответствующей строки, а к остальным первый элемент такой же строки.
  6. Заменить все элементы массива, сумма индексов которых равна 5, нулями.
  7. Вывести окончательное значение матрицы на экран. Код использует несколько вспомогательных функций и констант:
    • #include <stdio.h> используется для доступа к функциям ввода-вывода.
    • #include <stdlib.h> используется для доступа к функциям работы с памятью.
    • #include <time.h> используется для получения случайных чисел.
    • ROWS и COLUMNS определяют размерность двумерного массива.
    • MIN_VALUE и MAX_VALUE определяют диапазон случайных значений для элементов массива.
    • bounded_rand(min, max) используется для генерации случайного числа в заданном диапазоне.
    • tmp и tmp2 используются как временные переменные в различных операциях.
    • matrix[i][j] используется для доступа к элементам двумерного массива.
    • srand(time(NULL)) используется для инициализации генератора случайных чисел текущим временем.
    • printf() используется для вывода значений массива на экран. Код выполняет сложные операции над двумерным массивом, используя простую и понятную структуру. Он может быть использован как отправная точка для более сложных алгоритмов обработки данных.

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


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

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

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