Содать рандомный вектор и найти в нем число приближенное к числу введенному с консоли - C (СИ)
Формулировка задачи:
Добра всем, желательно через функцию
Решение задачи: «Содать рандомный вектор и найти в нем число приближенное к числу введенному с консоли»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int main(void)
- {
- unsigned int N = 0;
- int* a = NULL;
- unsigned int i = 0;
- int M = 0;
- unsigned int closestI = 0;
- srand(time(NULL));
- printf("Enter number of elements in array (N):");
- scanf("%u", &N);
- a = malloc(N * sizeof(*a));
- for(i = 0; i < N; i++)
- {
- a[i] = (rand() % 20) - 10;
- printf("a[%u] = %d\n", i, a[i]);
- }
- printf("Enter number to search:");
- scanf("%d", &M);
- closestI = 0;
- for(i = 1; i < N; i++)
- {
- if ((abs(M - a[i])) < (abs(M - a[closestI])))
- {
- closestI = i;
- }
- }
- printf("Closest value found: a[%u] = %d", closestI, a[closestI]);
- free(a);
- return 0;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем функцию main()
- Инициализируем переменные: N (количество элементов в массиве), a (указатель на массив), i (счетчик для цикла), M (число, которое нужно найти в массиве), closestI (индекс ближайшего числа)
- Задаем начальное значение для генератора случайных чисел
- Выводим сообщение и считываем количество элементов в массиве
- Выделяем память под массив
- Заполняем массив случайными числами от -10 до 10 с шагом 2
- Выводим заполненный массив
- Выводим сообщение и считываем число, которое нужно найти в массиве
- Инициализируем переменную closestI значением 0
- Проходим циклом по массиву, начиная с 1 элемента, т.к. closestI в начале равен 0
- Сравниваем разницу между искомым числом и текущим элементом массива и предыдущим closestI. Если текущая разница меньше, то обновляем значение closestI
- После прохода по всем элементам массива выводим индекс ближайшего числа и само число
- Освобождаем память, выделенную под массив
- Возвращаем 0, заканчивая работу функции main()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д