Найти 2 первых элемента в массиве, значения которых не попадают в заданный с клавиатуры диапазон - C (СИ)

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

Доброй ночи. Помогите с программой на работу с массивом. Найти 2 первых элемента в массиве С (17), значения которых не попадают в заданный с клавиатуры диапазон [A, B]. Поменять их местами.


textual

Код к задаче: «Найти 2 первых элемента в массиве, значения которых не попадают в заданный с клавиатуры диапазон - C (СИ)»

#ifdef _MSC_VER
    #define _CRT_SECURE_NO_WARNINGS
#endif
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int first_not_in_range(const int* p, const size_t size, int min, int max)
{
    size_t i = 0;
    for (i = 0; i < size; i++)
        if (!(min <= p[i] && p[i] <= max))
            return i;
    return -1;
}
 
void swap(int *p1, int* p2)
{
    int buf = *p1;
    *p1 = *p2;
    *p2 = buf;
}
 
#define SIZE 17
 
void print(const int* p, size_t size)
{
    while (size--)
        printf("%d ", *p++);
    putchar('\n');
}
 
int main(void)
{
    int a = 0,
        b = 0, 
        c[SIZE], 
        first = 0, 
        second = 0,
        i = 0;
    
    srand(time(0));
    for (i = 0; i < SIZE; i++)
        c[i] = rand() % 20;
 
    print(c, SIZE);
 
    printf(">");
    if (scanf("%d %d", &a, &b) == 2)
    {
        first = first_not_in_range(c, SIZE, a, b);
        if (first != -1)
        {
            second = first_not_in_range(c + a + 1, SIZE - a - 1, a, b);
            if (second != -1)
            {
                swap(c + first, c + second + first + 1);
                print(c, SIZE);
            }
            else
            {
                puts("Second element not in range not found");
            }
        }
        else
        {
            puts("First element not in range not found");
        }
        return EXIT_SUCCESS;
    }
 
    return EXIT_FAILURE;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

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

Источник
Похожие ответы