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

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

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

Прошу помочь. Дано число R и массив размера N. Найти два соседних элемента массива, сумма которых наиболее близка к числу R, и вывести эти элементы в порядке возрастания их индексов (то есть такой элемент AK, для которого величина |AK – R| является минимальной).

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

textual
Листинг программы
  1. #include <limits.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main(int argc, char** argv)
  6. {
  7.     int r = 8, array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10 };
  8.    
  9.     unsigned idx = 0, diff = UINT_MAX;
  10.    
  11.     for(int i = 0; i < (sizeof(array) / sizeof(int)) - 1; ++i)
  12.     {
  13.         if((array[i] + array[i + 1] - r) < abs(diff))
  14.         {
  15.             idx = i;
  16.            
  17.             diff = abs((array[i] + array[i + 1] - r));
  18.         }
  19.     }
  20.    
  21.     printf("Cумма %d и %d наиболее близка числу %d\n", array[idx], array[idx + 1], r);
  22.  
  23.     return EXIT_SUCCESS;
  24. }

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

В этом коде ищется два соседних элемента массива, сумма которых наиболее близка к числу R. Список действий:

  1. Объявляются переменные:
    • 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)
  2. Запускается цикл, который проходит по всем элементам массива, кроме последнего (для того чтобы не суммировать элемент с самим собой) В каждой итерации цикла выполняется следующая последовательность действий:
    • Вычисляется разница между суммой текущих и следующих элементов массива и числом R
    • Если эта разница меньше, чем текущая разница (т.е. текущая сумма ближе к числу R), то обновляются переменные idx и diff
  3. После завершения цикла выводится сообщение с найденными элементами и числом R
  4. Код завершается с успехом

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы