Определить сумму элементов в тех столбцах матрицы, которые не содержат отрицательных элементов - 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 и выполняет следующие действия:
- Объявление переменных и функций
const int k=3
- определяет размер матрицы (в данном случае 3x3)void sum (int mas[k][k]);
- функция для вычисления суммы элементов в строке матрицыvoid max(int mas[k][k]);
- функция для поиска максимального значения в строке матрицы
- Ввод данных
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++ )
- цикл для вывода элементов матрицы( j < (k-1) ) ?
%d\t:
%d\n` - условие для форматирования вывода (табуляция или перенос строки)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;
- завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д