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

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

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

Кто знает как написать такую программу,вот текст задания: Дана целочисленная квадратная матрица. Определить: 1) сумму элементов в тех столбцах, которые не содержат отрицательных элементов; 2) минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы. Язык програамирования СИ..Очень прошу,с первой частью проблем нет,со 2-й путаюсь=( если у кого есть время...

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

textual
Листинг программы
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
const int k=3;
void sum (int mas[k][k]);
void max(int mas[k][k]);
 
int main(){
    int arr[k][k];
    int i, j;
 
    for ( i = 0; i < k; i++ ){
        for ( j = 0; j < k; j++ ){
            printf("arr[%d][%d] = ", i+1, j+1);
            scanf("%d", &arr[i][j]);
        }
    }
 
    printf("\n-----------------------\n");
    for ( i = 0; i < k; i++ )
    for ( j = 0; j < k; j++ )
    printf( ( j < (k-1) ) ? "%d\t" : "%d\n", arr[i][j]);
 
    printf("\n Summa elementov v teh strokah,kotorye ne soderjat otricatelnyh elementov:");
    sum(arr);
    printf("\n \n Maximum sredi summ elementov diagonalej,parallelnyh glavnoj diagonali matricy: ");
    max(arr);
    fflush(stdin);
    char c=getchar();
    return 0;
}
 
void sum(int mas[k][k])
{
    int i,j,a,sum,n;
    for (i=0;i<k;i++)
    { 
        a=0;
        for (j=0;j<k;j++)
        if (mas[i][j]<0) a++;
        if (a==0) 
        { 
            sum=0;
            for (n=0;n<k;n++)
            sum+=mas[i][n];
            printf("\n stroka %d: %d",(i+1),sum);
        }
    }
}
int sumDiagonal (int matrix[k][k], int currentDiagonal)
{
    int sum = 0;
    for(int i = 0, j = currentDiagonal; i < k; ++i)
    {
        sum += abs(matrix[j][i]);
        --j;
        if(j < 0)
            j = k - 1;
    }
    return sum;
}
void max(int matrix[k][k])
{
    int max = sumDiagonal(matrix, 0);
    for(int i = 1, cnt; i < k; ++i)
    {
        cnt = sumDiagonal(matrix, i);
        if(cnt > max)
            max = cnt;
    }
    printf("%d\n",max);
}

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

Код представлен на языке C и выполняет следующие действия:

  1. Объявление переменных и функций
    • const int k=3 - определяет размер матрицы (в данном случае 3x3)
    • void sum (int mas[k][k]); - функция для вычисления суммы элементов в строке матрицы
    • void max(int mas[k][k]); - функция для поиска максимального значения в строке матрицы
  2. Ввод данных
    • int arr[k][k]; - объявление матрицы для хранения данных
    • int i, j; - переменные для индексации матрицы
    • for ( i = 0; i < k; i++ ) - цикл для заполнения матрицы значениями
    • for ( j = 0; j < k; j++ ) - цикл для заполнения матрицы значениями
    • printf(arr[%d][%d] = , i+1, j+1); - печать индекса элемента матрицы
    • scanf(%d, &arr[i][j]); - ввод значения в элемент матрицы
  3. Вывод данных
    • printf(\n-----------------------\n); - печать разделителя
    • for ( i = 0; i < k; i++ ) - цикл для вывода элементов матрицы
    • for ( j = 0; j < k; j++ ) - цикл для вывода элементов матрицы
    • ( j < (k-1) ) ?%d\t:%d\n` - условие для форматирования вывода (табуляция или перенос строки)
    • printf( ( j < (k-1) ) ?%d\t:%d\n, arr[i][j]); - печать элемента матрицы
  4. Вычисление суммы элементов в строке матрицы
    • printf(\n Summa elementov v teh strokah,kotorye ne soderjat otricatelnyh elementov:); - печать заголовка
    • sum(arr); - вызов функции для вычисления суммы
  5. Вычисление максимального значения в строке матрицы
    • printf(\n \n Maximum sredi summ elementov diagonalej,parallelnyh glavnoj diagonali matricy: ); - печать заголовка
    • max(arr); - вызов функции для вычисления максимального значения
  6. Вывод результата
    • fflush(stdin); - очистка буфера ввода
    • char c=getchar(); - получение символа из стандартного ввода
    • return 0; - завершение программы

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


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

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

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