Найти 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем функцию
first_not_in_range
, которая возвращает индекс первого элемента в массиве, значение которого не попадает в заданный диапазон - Определяем функцию
swap
, которая меняет местами два элемента в массиве - Задаём размер массива
SIZE
и инициализируем переменныеa
,b
,c
,first
,second
иi
- Заполняем массив
c
случайными значениями от 0 до 19 - Выводим заполненный массив на экран
- Запрашиваем у пользователя два числа
a
иb
для определения диапазона - Если пользователь ввёл корректные числа, то ищем первый элемент в массиве, значение которого не попадает в заданный диапазон и сохраняем его индекс в переменную
first
- Если такой элемент найден, то ищем второй элемент в массиве, значение которого не попадает в заданный диапазон и сохраняем его индекс в переменную
second
- Если такой элемент найден, то меняем местами элементы в массиве
c
с помощью функцииswap
- Выводим измененный массив на экран
- Если второй элемент не найден, то выводим сообщение об ошибке на экран
- Возвращаем код выполнения программы, равный 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д