Найдите сумму трех наибольших отрицательных четных элементов исходного массива Р(22) - C (СИ)

Формулировка задачи:

Найдите сумму трех наибольших отрицательных четных элементов исходного массива Р(22).

Код к задаче: «Найдите сумму трех наибольших отрицательных четных элементов исходного массива Р(22) - C (СИ)»

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;
}

10   голосов, оценка 3.600 из 5


СОХРАНИТЬ ССЫЛКУ