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

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

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

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

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

textual
Листинг программы
  1. #include "stdafx.h"
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <conio.h>
  5.  
  6. const int k=3;
  7. void sum (int mas[k][k]);
  8. void max(int mas[k][k]);
  9.  
  10. int main(){
  11.     int arr[k][k];
  12.     int i, j;
  13.  
  14.     for ( i = 0; i < k; i++ ){
  15.         for ( j = 0; j < k; j++ ){
  16.             printf("arr[%d][%d] = ", i+1, j+1);
  17.             scanf("%d", &arr[i][j]);
  18.         }
  19.     }
  20.  
  21.     printf("\n-----------------------\n");
  22.     for ( i = 0; i < k; i++ )
  23.     for ( j = 0; j < k; j++ )
  24.     printf( ( j < (k-1) ) ? "%d\t" : "%d\n", arr[i][j]);
  25.  
  26.     printf("\n Summa elementov v teh strokah,kotorye ne soderjat otricatelnyh elementov:");
  27.     sum(arr);
  28.     printf("\n \n Maximum sredi summ elementov diagonalej,parallelnyh glavnoj diagonali matricy: ");
  29.     max(arr);
  30.     fflush(stdin);
  31.     char c=getchar();
  32.     return 0;
  33. }
  34.  
  35. void sum(int mas[k][k])
  36. {
  37.     int i,j,a,sum,n;
  38.     for (i=0;i<k;i++)
  39.     {
  40.         a=0;
  41.         for (j=0;j<k;j++)
  42.         if (mas[i][j]<0) a++;
  43.         if (a==0)
  44.         {
  45.             sum=0;
  46.             for (n=0;n<k;n++)
  47.             sum+=mas[i][n];
  48.             printf("\n stroka %d: %d",(i+1),sum);
  49.         }
  50.     }
  51. }
  52. int sumDiagonal (int matrix[k][k], int currentDiagonal)
  53. {
  54.     int sum = 0;
  55.     for(int i = 0, j = currentDiagonal; i < k; ++i)
  56.     {
  57.         sum += abs(matrix[j][i]);
  58.         --j;
  59.         if(j < 0)
  60.             j = k - 1;
  61.     }
  62.     return sum;
  63. }
  64. void max(int matrix[k][k])
  65. {
  66.     int max = sumDiagonal(matrix, 0);
  67.     for(int i = 1, cnt; i < k; ++i)
  68.     {
  69.         cnt = sumDiagonal(matrix, i);
  70.         if(cnt > max)
  71.             max = cnt;
  72.     }
  73.     printf("%d\n",max);
  74. }

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

Код представлен на языке 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы