написать программы на языке СИ 1)Дан массив, состоящий из n целых чисел (n<=20)
Найти сумму элементов, абсолютное значение которых больше среднеарифметического модулей отрицательных элементов.

2)Двумерные массивы
В матрице А(4-строки,3-столбца) поменять местами наибольшие элементы в первом и третьем столбцах.

чулпан2008 чулпан2008    1   15.12.2020 17:51    8

Ответы
Verka51 Verka51  27.12.2023 12:08
Привет! Конечно, я помогу тебе с этими задачами на языке СИ. Давай рассмотрим каждую задачу по очереди.

1) Задача с массивом:

Для начала давай разберемся, что нужно сделать. В задаче сказано, что у нас есть массив из n целых чисел. Мы должны найти сумму элементов, абсолютное значение которых больше среднеарифметического модулей отрицательных элементов.

Для решения этой задачи, нам необходимо выполнить следующие шаги:

1. Объявить переменные:
- n: для хранения количества элементов в массиве.
- arr: массив для хранения целых чисел.
- sum: для хранения суммы элементов, удовлетворяющих условию.
- neg_sum: для хранения суммы модулей отрицательных элементов.
- neg_count: для хранения количества отрицательных элементов.

2. Ввести количество элементов в массиве (n) с клавиатуры.

3. Заполнить массив arr с помощью цикла, который будет выполняться от 0 до (n-1).

4. Найти сумму модулей отрицательных элементов и их количество с помощью цикла, который будет выполняться от 0 до (n-1). Внутри цикла будем проверять, является ли текущий элемент отрицательным числом. Если да, то увеличиваем neg_sum на модуль элемента и увеличиваем neg_count на 1.

5. Найти среднеарифметическое модулей отрицательных элементов, разделив neg_sum на neg_count. Обрати внимание, что перед делением нужно проверить, что neg_count не равен нулю.

6. Найти сумму элементов, абсолютное значение которых больше найденного среднеарифметического модулей отрицательных элементов. Для этого используем ещё один цикл, который будет выполняться от 0 до (n-1). Внутри цикла проверяем, является ли текущий элемент по модулю больше найденного среднеарифметического. Если да, то добавляем его к sum.

7. Вывести полученную сумму на экран.

Вот готовый код для решения этой задачи:

```c
#include
#include

int main() {
int n;
int arr[20];
int sum = 0;
int neg_sum = 0;
int neg_count = 0;

printf("Введите количество элементов в массиве (<=20): ");
scanf("%d", &n);

printf("Введите элементы массива:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}

for (int i = 0; i < n; i++) {
if (arr[i] < 0) {
neg_sum += abs(arr[i]);
neg_count++;
}
}

if (neg_count != 0) {
float neg_avg = (float)neg_sum / neg_count;

for (int i = 0; i < n; i++) {
if (abs(arr[i]) > neg_avg) {
sum += arr[i];
}
}

printf("Сумма элементов, удовлетворяющих условию: %d\n", sum);
} else {
printf("Нет отрицательных элементов\n");
}

return 0;
}
```

2) Задача с двумерным массивом:

А теперь рассмотрим вторую задачу. Нам дана матрица A с размерностью 4 строки и 3 столбца. Мы должны поменять местами наибольшие элементы в первом и третьем столбцах.

Для решения этой задачи, нам необходимо выполнить следующие шаги:

1. Объявить переменные:
- matrix: двумерный массив для хранения элементов матрицы A.
- max1: для хранения максимального элемента в первом столбце.
- max3: для хранения максимального элемента в третьем столбце.
- temp: для временного хранения элемента при обмене.

2. Заполнить матрицу matrix с помощью двух вложенных циклов. Внешний цикл будет выполняться от 0 до 3 (количество строк), а внутренний цикл будет выполняться от 0 до 2 (количество столбцов). Значения элементов можно ввести с клавиатуры или присвоить им любые значения для тестирования.

3. Найти максимальный элемент в первом столбце. Для этого используем цикл, который будет выполняться от 1 до 3 (количество строк). Внутри цикла проверяем, является ли текущий элемент больше max1. Если да, то обновляем значение max1.

4. Найти максимальный элемент в третьем столбце. Для этого используем цикл, который будет выполняться от 1 до 3 (количество строк). Внутри цикла проверяем, является ли текущий элемент больше max3. Если да, то обновляем значение max3.

5. Поменять местами наибольшие элементы в первом и третьем столбцах. Для этого используем временную переменную temp. Присваиваем значение matrix[0][0] переменной temp. Затем присваиваем matrix[0][0] значение matrix[max_index1][0], где max_index1 - индекс строки с максимальным элементом в первом столбце. Затем присваиваем matrix[max_index1][0] значение temp. Повторяем то же самое для третьего столбца и максимального элемента в третьем столбце.

6. Вывести получившуюся матрицу на экран.

Вот готовый код для решения этой задачи:

```c
#include

int main() {
int matrix[4][3];
int max1 = matrix[0][0];
int max3 = matrix[0][2];
int max_index1 = 0;
int max_index3 = 0;
int temp;

printf("Введите элементы матрицы A(4x3):\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
scanf("%d", &matrix[i][j]);
}
}

// Нахождение максимального элемента в первом столбце
for (int i = 1; i < 4; i++) {
if (matrix[i][0] > max1) {
max1 = matrix[i][0];
max_index1 = i;
}
}

// Нахождение максимального элемента в третьем столбце
for (int i = 1; i < 4; i++) {
if (matrix[i][2] > max3) {
max3 = matrix[i][2];
max_index3 = i;
}
}

// Обмен максимальных элементов в первом и третьем столбцах
temp = matrix[0][0];
matrix[0][0] = matrix[max_index1][0];
matrix[max_index1][0] = temp;

temp = matrix[0][2];
matrix[0][2] = matrix[max_index3][2];
matrix[max_index3][2] = temp;

printf("Модифицированная матрица A:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}

return 0;
}
```

Вот и всё! Если у тебя есть еще какие-то вопросы, не стесняйся задавать!
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика