Файл: Программа с локальными массивами #include float average positive elements(int X, int size) int count 0.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 26.10.2023

Просмотров: 12

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Вариант 15 Дабаев Д.С.
Проектирование алгоритма обработки одномерных массивов
Найти среднее арифметическое положительных элементов вектора X,

имеющих четный номер, и среднее арифметическое отрицательных

элементов вектора Y, имеющих нечетный номер.

Анализ данных:



Блок-схема:



Программа с локальными массивами:

#include

float average_positive_elements(int X[], int size) {

int count = 0;

int sum = 0;

for (int i = 1; i < size; i += 2) {

if (X[i] > 0) {

count++;

sum += X[i];

}

}

if (count > 0) {

return (float)sum / count;

} else {

return 0.0;

}

}

float average_negative_elements(int Y[], int size) {

int count = 0;

int sum = 0;

for (int i = 0; i < size; i += 2) {

if (Y[i] < 0) {

count++;

sum += Y[i];

}

}

if (count > 0) {

return (float)sum / count;

} else {

return 0.0;

}

}

int main() {

int n;

printf("Введите размер векторов X и Y: ");

scanf("%d", &n);

int X[n];

int Y[n];

printf("Введите элементы вектора X:\n");

for (int i = 0; i < n; i++) {

printf("X[%d] = ", i);

scanf("%d", &X[i]);

}

printf("Введите элементы вектора Y:\n");

for (int i = 0; i < n; i++) {

printf("Y[%d] = ", i);

scanf("%d", &Y[i]);

}

float avg_positive = average_positive_elements(X, n);

float avg_negative = average_negative_elements(Y, n);

printf("Среднее арифметическое положительных элементов вектора X с четными индексами: %f\n", avg_positive);

printf("Среднее арифметическое отрицательных элементов вектора Y с нечетными индексами: %f\n", avg_negative);

return 0;

}

Программа с динамическими массивами:

#include

#include

float average_positive_elements(int* X, int size) {

int count = 0;

int sum = 0;

for (int i = 1; i < size; i += 2) {

if (X[i] > 0) {

count++;

sum += X[i];

}

}

if (count > 0) {

return (float)sum / count;

} else {

return 0.0;

}

}

float average_negative_elements(int* Y, int size) {

int count = 0;

int sum = 0;

for (int i = 0; i < size; i += 2) {

if (Y[i] < 0) {

count++;

sum += Y[i];

}

}

if (count > 0) {

return (float)sum / count;

} else {

return 0.0;

}

}

int main() {

int n;

printf("Введите размер векторов X и Y: ");

scanf("%d", &n);

int* X = (int*)malloc(n * sizeof(int));

int* Y = (int*)malloc(n * sizeof(int));

printf("Введите элементы вектора X:\n");

for (int i = 0; i < n; i++) {

printf("X[%d] = ", i);

scanf("%d", &X[i]);

}

printf("Введите элементы вектора Y:\n");

for (int i = 0; i < n; i++) {

printf("Y[%d] = ", i);

scanf("%d", &Y[i]);

}

float avg_positive = average_positive_elements(X, n);

float avg_negative = average_negative_elements(Y, n);

printf("Среднее арифметическое положительных элементов вектора X с четными индексами: %f\n", avg_positive);

printf("Среднее арифметическое отрицательных элементов вектора Y с нечетными индексами: %f\n", avg_negative);

free(X);

free(Y);

return 0;

}

Проектирование алгоритма обработки матриц:

Анализ данных:



Блок-схема:



Код с локальными массивами:

#include

#define MAX_ROWS 100

#define MAX_COLS 100

int countRowsWithNegativeSum(int matrix[MAX_ROWS][MAX_COLS], int rows, int cols) {

int count = 0

for (int i = 0; i < rows; i++) {

int sum = 0;

for (int j = 0; j < cols; j++) {

sum += matrix[i][j];

}

if (sum < 0) {

count++;

}

}

return count;

}

int main() {

int matrix[MAX_ROWS][MAX_COLS];

int rows, cols;

printf("Введите количество строк матрицы: ");

scanf("%d", &rows);

printf("Введите количество столбцов матрицы: ");

scanf("%d", &cols);

printf("Введите элементы матрицы:\n");

for (int i = 0; i < rows; i++) {

printf("Строка %d: ", i + 1);

for (int j = 0; j < cols; j++) {

scanf("%d", &matrix[i][j]);

}

}

int count = countRowsWithNegativeSum(matrix, rows, cols);

printf("Число строк матрицы, сумма элементов которых меньше 0: %d\n", count);

return 0;

}

Код с динамическими массивами:

#include

#include

int countRowsWithNegativeSum(int** matrix, int rows, int cols) {

int count = 0;

for (int i = 0; i < rows; i++) {

int sum = 0;

for (int j = 0; j < cols; j++) {

sum += matrix[i][j];

}

if (sum < 0) {

count++;

}

}

return count;

}

int main() {

int **matrix;

int rows, cols;

printf("Введите количество строк матрицы: ");

scanf("%d", &rows);

printf("Введите количество столбцов матрицы: ");

scanf("%d", &cols);

// Выделение памяти для матрицы

matrix = (int **)malloc(rows * sizeof(int *));

for (int i = 0; i < rows; i++) {

matrix[i] = (int *)malloc(cols * sizeof(int));

}

printf("Введите элементы матрицы:\n");

for (int i = 0; i < rows; i++) {

printf("Строка %d: ", i + 1);

for (int j = 0; j < cols; j++) {

scanf("%d", &matrix[i][j]);

}

}

int count = countRowsWithNegativeSum(matrix, rows, cols);

printf("Число строк матрицы, сумма элементов которых меньше 0: %d\n", count);

// Освобождение памяти

for (int i = 0; i < rows; i++) {

free(matrix[i]);

}

free(matrix);

return 0;

}

Разработка и использование функций Си (из семинара 2 курса «Программирование)»:
Проверить, есть ли в матрице A (6×5) элементы, большие 10, а в матрице

B (5×7) — элементы, большие 5
Блок-схема:



Код:

#include

#define ROWS_A 6

#define COLS_A 5

#define ROWS_B 5

#define COLS_B 7

int checkMatrixA(int matrixA[ROWS_A][COLS_A], int threshold) {

for (int i = 0; i < ROWS_A; i++) {

for (int j = 0; j < COLS_A; j++) {

if (matrixA[i][j] > threshold) {

return 1; // Есть элемент, больший заданного значения

}

}

}

return 0; // Нет элементов, больших заданного значения

}

int checkMatrixB(int matrixB[ROWS_B][COLS_B], int threshold) {

for (int i = 0; i < ROWS_B; i++) {

for (int j = 0; j < COLS_B; j++) {

if (matrixB[i][j] > threshold) {

return 1; // Есть элемент, больший заданного значения

}

}

}

return 0; // Нет элементов, больших заданного значения

}

int main() {

int matrixA[ROWS_A][COLS_A] = {

{2, 4, 6, 8, 10},

{12, 14, 16, 18, 20},

{1, 3, 5, 7, 9},

{11, 13, 15, 17, 19},

{21, 22, 23, 24, 25},

{26, 27, 28, 29, 30}

};

int matrixB[ROWS_B][COLS_B] = {

{1, 2, 3, 4, 5, 6, 7},

{8, 9, 10, 11, 12, 13, 14},

{15, 16, 17, 18, 19, 20, 21},

{22, 23, 24, 25, 26, 27, 28},

{29, 30, 31, 32, 33, 34, 35}

};

int thresholdA = 10;

int thresholdB = 5;

int resultA = checkMatrixA(matrixA, thresholdA);

int resultB = checkMatrixB(matrixB, thresholdB);

if (resultA) {

printf("В матрице A есть элементы, большие %d\n", thresholdA);

} else {

printf("В матрице A нет элементов, больших %d\n", thresholdA);

}

if (resultB) {

printf("В матрице B есть элементы, большие %d\n", thresholdB);

} else {

printf("В матрице B нет элементов, больших %d\n", thresholdB);

}

return 0;