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

Узнай цену своей работы

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

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

Решение задачи: «Найти 2 первых элемента в массиве, значения которых не попадают в заданный с клавиатуры диапазон»

textual
Листинг программы
#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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Определяем функцию first_not_in_range, которая возвращает индекс первого элемента в массиве, значение которого не попадает в заданный диапазон
  3. Определяем функцию swap, которая меняет местами два элемента в массиве
  4. Задаём размер массива SIZE и инициализируем переменные a, b, c, first, second и i
  5. Заполняем массив c случайными значениями от 0 до 19
  6. Выводим заполненный массив на экран
  7. Запрашиваем у пользователя два числа a и b для определения диапазона
  8. Если пользователь ввёл корректные числа, то ищем первый элемент в массиве, значение которого не попадает в заданный диапазон и сохраняем его индекс в переменную first
  9. Если такой элемент найден, то ищем второй элемент в массиве, значение которого не попадает в заданный диапазон и сохраняем его индекс в переменную second
  10. Если такой элемент найден, то меняем местами элементы в массиве c с помощью функции swap
  11. Выводим измененный массив на экран
  12. Если второй элемент не найден, то выводим сообщение об ошибке на экран
  13. Возвращаем код выполнения программы, равный 0

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы