Решить уравнение - C (СИ) (76833)
Формулировка задачи:
2a!x3+3(a+b)!=0
где a - количество положительных элементов, стоящих в матрице t(5,5) в столбцах с четными номерами;
b - количество положительных элементов, стоящих в матрице d(6,6) в столбцах с четными номерами.
Решение задачи: «Решить уравнение»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define SIZE_T 5
#define SIZE_D 6
double factorial(int op);
int main(void) {
int i, j;
int a = 0;
int b = 0;
double x;
int t[SIZE_T][SIZE_T] = { {1, 4, -5, 0, 7},
{4, 7, 8, -1, 2},
{1, 0, 4, 7, 4},
{3, -6, -8, 1, 5},
{2, -9, 5, 7, 8} };
int d[SIZE_D][SIZE_D] = { {3, 6, 9, 0, 5, -1},
{1, 6, 9, 8, 4, 0},
{1, 0, 5, -2, 8, 8},
{3, 8, 0, 6, -3, 7},
{4, 9, 4, 9, 7, 9},
{7, 0, 2, 8, -9, 5} };
/* Находим число a */
for (i = 0; i < SIZE_T; ++i) {
for (j = 0; j < SIZE_T; ++j) {
if (j % 2 != 0) {
if (t[i][j] > 0) {
++a;
}
}
}
}
/* Аналогично находим число b */
for (i = 0; i < SIZE_D; ++i) {
for (j = 0; j < SIZE_D; ++j) {
if (j % 2 != 0) {
if (d[i][j] > 0) {
++b;
}
}
}
}
x = -1 * ((factorial(a + b)) / (2 * factorial(a)));
printf("%.2f\n", x);
return EXIT_SUCCESS;
}
double factorial(int op) {
double result = 1;
if (op == 0) {
return result;
}
while (op > 0) {
result *= op;
--op;
}
return result;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O, математикой и стандартными функциями
- Определяем функцию
factorial, которая вычисляет факториал числа - В функции
mainопределяем переменныеi,j,a,b,xи массивыtиdразмеромSIZE_TиSIZE_Dсоответственно - Используем два вложенных цикла
forдля определения количества положительных элементов в массивахtиdи сохранения результатов в переменныеaиbсоответственно - Вычисляем значение
xиспользуя формулу из условия задачи, гдеfactorial(a + b)вычисляет факториал суммыaиb, а2 * factorial(a)вычисляет факториал удвоенного значенияa - Выводим значение
xна экран - Возвращаем значение
EXIT_SUCCESSв функцииmain, что означает успешное выполнение программы