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

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

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

Вот задача: Матрица A[N,M] (М кратно 4) разделена по вертикали на две половины. Определить сумму элементов каждого столбца левой половины и сумму элементов каждого четного столбца правой половины матрицы А. Помогите плиз
const
    n=5;
    m=8;
var
    mas:array[1..n,1..m] of integer;
    sum:integer;
    i,j:word;
begin
    Randomize;
    writeln('Исходная матрица');
    for i:=1 to n do
        for j:=1 to m do
            begin
                mas[i,j]:=random(50)+1;
                write(mas[i,j]:3);
                if j=m then writeln;
            end;
    writeln('Суммы столбцов левой половины');
    for j:=1 to m div 2 do
        begin
            sum:=0;
            for i:=1 to n do
                    sum:=sum+mas[i,j];
            writeln('Сумма ',j,' столбца= ',sum);
        end;
    writeln('Суммы четных столбцов правой половины');
    for j:=m div 2+1 to m do
        begin
            if j mod 2 = 0 then
            begin
                sum:=0;
                for i:=1 to n do
                        sum:=sum+mas[i,j];
                writeln('Сумма ',j,' столбца= ',sum);
            end;
        end;
    readln;
end.

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

textual
Листинг программы
#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
int main(){
    setlocale(LC_ALL, "rus");
    srand(time(0));
 
    int **array_a;
    int i, j, k;
    int sum;
    int line;
    int column;
 
    printf("Введите размер матрицы: ");
    scanf("%d %d", &line, &column);
 
    while(column % 4 != 0){
        printf("Введите количество столбцов кратное 4: ");
        scanf("%d", &column);
    }
 
    array_a = (int**)malloc(sizeof(int)*line);
    for(i = 0; i < line; i++)
        array_a[i] = (int*)malloc(sizeof(int)*column);
 
    for(i = 0; i < line; i++){
        printf("\n");
        for(j = 0; j < column; j++){
            array_a[i][j] = rand()%10;
            printf("%d ", array_a[i][j]);
        }
    }
    
    printf("\n");
    for(i = 0; i < column/2; i++){
        sum = 0;
        for(j = 0; j < line; j++){
            sum += array_a[j][i];
        }
        printf("Столбец: %d Сумма: %d\n", i, sum);
    }
 
    for(i = column/2; i < column; i+=2){
        sum = 0;
        for(j = 0; j < line; j++){
            sum += array_a[j][i];
        }
        printf("Столбец: %d Сумма: %d\n", i, sum);
    }
    return 0;
}

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

  1. Включаются необходимые заголовочные файлы
  2. Устанавливается русская локальная настройка
  3. Инициализируется генератор случайных чисел
  4. Создается двумерный массив и выделяется память под него
  5. Массив заполняется случайными числами от 0 до 9
  6. Выводится заполненный массив
  7. Создается переменная для хранения суммы элементов столбца
  8. Выполняется цикл по нечетным столбцам (счет начинается с 0)
  9. В каждой итерации цикла суммируются элементы строки
  10. Выводится сумма и номер столбца
  11. Выполняется цикл по четным столбцам (счет начинается с 1)
  12. В каждой итерации цикла суммируются элементы строки
  13. Выводится сумма и номер столбца
  14. Программа возвращает 0, заканчивая свое выполнение

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


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

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

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