Вычислить сумму положительных элементов в нечетных строках матрицы - C (СИ)
Формулировка задачи:
Доброй ночи.
Помогите с программой, заранее спасибо.
Вычислить F , где Sn – сумма положительных элементов в нечетных строках матрицы Y(9х12), а So – сумма отрицательных элементов в четных строках той же матрицы.
Решение задачи: «Вычислить сумму положительных элементов в нечетных строках матрицы»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 9
#define COLUMNS 12
void fill( int [][ COLUMNS ] );
void display( int [][ COLUMNS ] );
int get_sum_of_positive_elements_in_odd_lines( int [][ COLUMNS ] );
int get_sum_of_negative_elements_in_even_lines( int [][ COLUMNS ] );
double get_F_value( int, int );
int main(int argc, char *argv[])
{
srand( time ( NULL) );
int matrix_Y[ ROWS ][ COLUMNS ];
fill( matrix_Y );
display( matrix_Y );
int Sn = get_sum_of_positive_elements_in_odd_lines( matrix_Y );
int So = get_sum_of_negative_elements_in_even_lines( matrix_Y );
if ( Sn != So ) {
double F_value = get_F_value( Sn, So );
printf( "\nF = %f\n", F_value );
}
else {
printf( "\nF не определено. Знаменатель в выражении для F равен нулю.\n" );
}
return 0;
}
void fill( int array[][ COLUMNS ] )
{
int i, j;
for ( i = 0; i < ROWS; i++ ) {
for ( j = 0; j < COLUMNS; j++ ) {
array[ i ][ j ] = rand() % 198 - 99; // Диапазон чисел от -99 до +99.
}
}
}
void display( int array[][ COLUMNS ] )
{
printf( "\nИсходный массив:\n" );
int i, j;
for ( i = 0; i < ROWS; i++ ) {
for ( j = 0; j < COLUMNS; j++ ) {
printf( "%5d", array[ i ][ j ] );
}
printf( "\n" );
}
}
int get_sum_of_positive_elements_in_odd_lines( int array[][ COLUMNS ] )
{
int i, j;
int sum = 0;
for ( i = 1; i < ROWS; i += 2 ) {
for ( j = 0; j < COLUMNS; j++ ) {
if ( 0 < array[ i ][ j ] ) {
sum += array[ i ][ j ];
}
}
}
return sum;
}
int get_sum_of_negative_elements_in_even_lines( int array[][ COLUMNS ] )
{
int i, j;
int sum = 0;
for ( i = 0; i < ROWS; i += 2 ) {
for ( j = 0; j < COLUMNS; j++ ) {
if ( array[ i ][ j ] < 0 ) {
sum += array[ i ][ j ];
}
}
}
return sum;
}
double get_F_value( int a, int b )
{
return (double) ( a + b ) / ( a - b );
}
Объяснение кода листинга программы
Код представляет собой программу на языке C, которая вычисляет сумму положительных элементов в нечетных строках матрицы, а также сумму отрицательных элементов в четных строках матрицы. Список действий:
- В функции
fillпроисходит заполнение матрицы случайными числами от -99 до +99. - В функции
displayпроисходит вывод содержимого матрицы на экран. - В функции
get_sum_of_positive_elements_in_odd_linesпроисходит обход каждого элемента в нечетных строках матрицы и суммирование положительных чисел. - В функции
get_sum_of_negative_elements_in_even_linesпроисходит обход каждого элемента в четных строках матрицы и суммирование отрицательных чисел. - В функции
get_F_valueпроисходит вычисление значения F по формуле (a + b) / (a - b), где a и b - суммы положительных и отрицательных элементов соответственно. - В функции
mainпроисходит инициализация матрицы, заполнение ее случайными числами, вывод содержимого матрицы на экран, вычисление суммы положительных и отрицательных элементов, проверка на равенство этих сумм и вывод значения F. Пожалуйста, обратите внимание, что в данном коде не учитывается возможность деления на ноль, что может привести к неопределенному поведению программы.