Найдите сумму трех наибольших отрицательных четных элементов исходного массива Р(22) - C (СИ)
Формулировка задачи:
Найдите сумму трех наибольших отрицательных четных элементов исходного массива Р(22).
Решение задачи: «Найдите сумму трех наибольших отрицательных четных элементов исходного массива Р(22)»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> int cmp(void* const a, void* const b) { int x = *(int*)a; int y = *(int*)b; if (x >= 0 && y >= 0) return 0; if (x >= 0 && y < 0) return 1; if (x < 0 && y >= 0) return -1; int x1 = x & 1; int y1 = y & 1; if (x1 != 0 && y1 != 0) return 0; if (x1 != 0 && y1 == 0) return 1; if (x1 == 0 && y1 != 0) return -1; return x > y ? -1 : x != y; } int main(void) { srand(time(NULL)); int p[22]; size_t i; for (i = 0; i < 22; i++) { p[i] = rand() % 30 - 20; printf("%d ", p[i]); } putchar('\n'); qsort(p, 22, sizeof(int), cmp); int sum = 0; for (i = 0; i < 3; i++) { sum += p[i]; printf("%d ", p[i]); } putchar('\n'); printf("%d\n", sum); return 0; }
Объяснение кода листинга программы
В этом коде:
- Создается массив
p
типаint
размером 22. - Заполняется массив случайными отрицательными четными числами с помощью функции
rand()
. - Выводится на экран содержимое массива.
- Массив сортируется по заданному условию с помощью функции
qsort()
и функции сравненияcmp()
. - Находится сумма трех наибольших отрицательных четных элементов массива с помощью цикла
for
и переменнойsum
. - Выводится на экран найденная сумма.
- Завершается программа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д