Как найти парные элементы массива, которые больше числа А, и их количество, число А ввести с клавиатуры?

Добрый вечер! Столкнулся с проблемой, нужно решить задачу, но немного не понимаю как её сделать, очень намудрил в коде и уже ничего понимаю. Помогите пожалуйста.

Здесь условия задачи - дано целочисленный одномерный массив, состоящий
из 16 элементов. Найти парные элементы массива, которые больше числа А,
и их количество. Число А ввести с клавиатуры.
Спасибо!

#include <stdio.h>
#define N 16
main() {
    int a[N],A, i, j, f;
    int count=0;
    printf("Input A="); scanf ("%f", &A);
    for (i=0; i<N; i++) {
        a[i] = rand() % 15;
        printf("%d ", a[i]);
    }
    printf("\n");
    for (i=0; i<N; i++) {
        count++;
        f = 1;
        for (j=0; j<N; j++)
            if (a[i] == a[j] && i != j) {
                f = 0;
                break;
            }
        if ((f == 1) > A) printf("%d ", a[i]);

    }
    printf("\n%d", count);
}
  • Вопрос задан
  • 693 просмотра
Решения вопроса 1
@Alexey_Alive
У тебя суперкривой код. Например, в
(f == 1) > A
Выражение (f == 1) будет или 0, или 1. Зачем ты его сравниваешь с A, непонятно.
Написал рабочий вариант.
#include <stdio.h>
#include <stdlib.h>


int main()
{
    enum {arrSize = 16};
    _Static_assert(arrSize >= 1, "arrSize should be more than 0");

    int arr[arrSize];

    for(size_t i = 0; i < arrSize; ++i)
    {
        arr[i] = rand() % 10; //Чтобы точно были парные элементы
    }

    int defNum;
    scanf("%d", &defNum);

    size_t count = 0;

    for(size_t i = 0; i < arrSize - 1; ++i)
    {
        if(arr[i] <= defNum)
        {
            continue;
        }

        size_t tmp = 0;

        for(size_t j = i + 1; j < arrSize; ++j)
        {
            if(arr[i] == arr[j])
            {
                ++tmp;
                arr[j] = defNum;
            }
        }

        if(tmp)
        {
            count += tmp + 1;
            printf("%d ", arr[i]);
        }
    }

    printf("\n%llu", count);

    return 0;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы