1. для каждого пункта написать подпрограмму-функцию на си - сформировать матрицу а(nхn); -вывести на экран значения матрицы, расположив каждую строку матрицы на строку экрана; - найти в матрице количество нулей на побочной диагонали матрицы; - посчитать средние арифметические значения положительных и отрицательных значений матрицы отдельно, но одной функцией. написать функцию (main), вызывающую разработанные вами функции.

Viktoria1289 Viktoria1289    3   27.01.2020 21:48    58

Ответы
KroJlick20178 KroJlick20178  08.01.2024 12:55
Хорошо, давайте начнем со следующей программи на языке C для решения этой задачи:

```c
#include

// Функция для заполнения матрицы
void fillMatrix(int n, int matrix[n][n]) {
printf("Введите значения матрицы:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
}

// Функция для печати матрицы
void printMatrix(int n, int matrix[n][n]) {
printf("Матрица:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}

// Функция для подсчета количества нулей на побочной диагонали матрицы
int countZeros(int n, int matrix[n][n]) {
int count = 0;
for (int i = 0; i < n; i++) {
if (matrix[i][n - 1 - i] == 0) {
count++;
}
}
return count;
}

// Функция для подсчета среднего значения элементов матрицы
float average(int n, int matrix[n][n], int positive) {
int sum = 0;
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (positive && matrix[i][j] > 0) {
sum += matrix[i][j];
count++;
} else if (!positive && matrix[i][j] < 0) {
sum += matrix[i][j];
count++;
}
}
}
return (float)sum / count;
}

// Главная функция
int main() {
int n;
printf("Введите размер матрицы: ");
scanf("%d", &n);

int matrix[n][n];
fillMatrix(n, matrix);
printMatrix(n, matrix);

int zeros = countZeros(n, matrix);
printf("Количество нулей на побочной диагонали: %d\n", zeros);

float positiveAverage = average(n, matrix, 1);
printf("Среднее арифметическое положительных элементов: %.2f\n", positiveAverage);

float negativeAverage = average(n, matrix, 0);
printf("Среднее арифметическое отрицательных элементов: %.2f\n", negativeAverage);

return 0;
}
```

Данный код включает в себя несколько функций. Здесь:
- `fillMatrix` используется для заполнения матрицы значениями, введенными пользователем;
- `printMatrix` используется для печати матрицы на экран;
- `countZeros` подсчитывает количество нулей на побочной диагонали матрицы;
- `average` вычисляет среднее арифметическое положительных или отрицательных значений матрицы.

В `main` функции объявляется переменная `n` для хранения размера матрицы. Пользователь будет приглашаться ввести значение `n`, после чего используются функции `fillMatrix` и `printMatrix`, чтобы заполнить матрицу и вывести ее на экран. Затем используются функции `countZeros` для подсчета нулей на побочной диагонали и `average` для вычисления среднего арифметического положительных и отрицательных значений матрицы. Результаты выводятся на экран.

Эта программа позволяет пользователю ввести матрицу n x n, выводит ее на экран, находит количество нулей на побочной диагонали и среднее арифметическое положительных и отрицательных значений матрицы.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика