написать программы на языке СИ 1)Дан массив, состоящий из n целых чисел (n<=20)
Найти сумму элементов, абсолютное значение которых больше среднеарифметического модулей отрицательных элементов.
2)Двумерные массивы
В матрице А(4-строки,3-столбца) поменять местами наибольшие элементы в первом и третьем столбцах.
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;
}
```
Вот и всё! Если у тебя есть еще какие-то вопросы, не стесняйся задавать!