Найти два соседних элемента массива, сумма которых наиболее близка к числу R - C (СИ)
Формулировка задачи:
Прошу помочь.
Дано число R и массив размера N. Найти два соседних элемента массива, сумма которых наиболее близка к числу R, и вывести эти элементы в порядке возрастания их индексов (то есть такой элемент AK, для которого величина |AK – R| является минимальной).
Решение задачи: «Найти два соседних элемента массива, сумма которых наиболее близка к числу R»
textual
Листинг программы
#include <limits.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char** argv) { int r = 8, array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10 }; unsigned idx = 0, diff = UINT_MAX; for(int i = 0; i < (sizeof(array) / sizeof(int)) - 1; ++i) { if((array[i] + array[i + 1] - r) < abs(diff)) { idx = i; diff = abs((array[i] + array[i + 1] - r)); } } printf("Cумма %d и %d наиболее близка числу %d\n", array[idx], array[idx + 1], r); return EXIT_SUCCESS; }
Объяснение кода листинга программы
В этом коде ищется два соседних элемента массива, сумма которых наиболее близка к числу R. Список действий:
- Объявляются переменные:
- r = 8 (считаем, что искомое число R равно 8)
- array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10} (считаем, что это исходный массив)
- idx = 0 (считаем, что индекс искомого элемента массива равен 0)
- diff = UINT_MAX (считаем, что разница между суммой элементов и числом R в данном случае равна максимальному значению типа unsigned int)
- Запускается цикл, который проходит по всем элементам массива, кроме последнего (для того чтобы не суммировать элемент с самим собой)
В каждой итерации цикла выполняется следующая последовательность действий:
- Вычисляется разница между суммой текущих и следующих элементов массива и числом R
- Если эта разница меньше, чем текущая разница (т.е. текущая сумма ближе к числу R), то обновляются переменные idx и diff
- После завершения цикла выводится сообщение с найденными элементами и числом R
- Код завершается с успехом
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д