Найти сумму положительных элементов под главной диагональю - C (СИ)
Формулировка задачи:
В данной действительной квадратной матрице порядка N*N. Найти : сумму положительных элементов под главной диагональю.
Решение задачи: «Найти сумму положительных элементов под главной диагональю»
textual
Листинг программы
/*В данной действительной квадратной матрице порядка N*N. Найти : сумму положительных элементов под главной диагональю.*/
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
int main(int argc, char** argv[])
{
int i,j,m,n,k,autogen;
setlocale(LC_ALL, "RUS");
printf("Введите количество элементов стороны квадратной матрицы:");
scanf("%d",&m);
n=m;
while(1){
printf("Сгенерировать массив автоматически ?(1-Да , 0-Нет):");
scanf("%d",&autogen);
switch(autogen)
{
case 0:
puts("Вы выбрали не генерировать массив.");
break;
case 1:
puts("Вы выбрали авто генерациию массива.");
break;
default:
puts("Неправильный ввод.");
continue;
}
if(autogen==0||autogen==1)
{
break;
}
}
int str_sum;
int A[m][n];
if(autogen){
for (i = 0; i < m; i++ ){
for (j=0; j<n; j++){
A[i][j]=-20 + rand() %80;//заполняем матрицу сгенерированными элементами
}
}
}
else{
for (i = 0; i < m; i++ ){
for (j=0; j<n; j++){
A[i][j]=-20 + rand() %80;//заполняем матрицу сгенерированными элементами
printf("Введите элемент [%d][%d]=", i,j);
scanf("%d",&A[i][j]);
}
}
}
printf( "Полученный массив:\n" );
str_sum=0;
for ( i = 0; i < m; i++ ) {
for(k=0;k<i;k++){
if(A[i][k]>0)
str_sum+= A[i][k];
}
for ( j = 0; j < n; j++ )
{
printf( "[%d][%d]=%d ", i, j, A[i][j] );
}
printf( "\n");
//printf( "\n Cумма положительных элементов строки расположенных ниже главной диагонали: %d \n", str_sum );
printf( "\n");
}
printf( "\nCумма положительных элементов строки расположенных ниже главной диагонали: %d \n", str_sum );
}
Объяснение кода листинга программы
В данном коде выполняется следующие действия:
- Ввод количества элементов стороны квадратной матрицы с помощью функции scanf.
- Переменная autogen инициализируется значением 0.
- Вывод сообщения о том, что матрица не будет сгенерирована.
- Если autogen равно 0 или 1, то выполняется выход из цикла.
- Инициализация массива A.
- Если autogen равно 0, то происходит заполнение матрицы с помощью функции scanf.
- Если autogen равно 1, то происходит автоматическое заполнение матрицы с помощью генератора случайных чисел.
- Вывод сообщения о полученном массиве.
- Инициализация переменной str_sum значением 0.
- Проход по всем элементам матрицы с помощью двух вложенных циклов.
- Если элемент A[i][k] больше 0, то к переменной str_sum прибавляется значение этого элемента.
- Вывод значения элемента матрицы с помощью функции printf.
- Вывод значения переменной str_sum.