Найти два соседних элемента массива, сумма которых наиболее близка к числу 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. Список действий:

  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
Похожие ответы