Задание:
Дано число R и массив размера N. Найти два соседних элемента массива, сумма которых наиболее близка к числу R, и вывести эти элементы в порядке возрастания их индексов.(т. е. такой элемент AK, для которого величина |AK − R| является минимальной.
Решение в Pelles C:
На вход программа принимает числа через пробел:
Первое число - размер массива N.
Второе число - само число R.
Далее через пробел пишутся N чисел (собственно сам массив).
Программа выдает во второй строке два числа, сумма которых наиболее близка к числу R.
#include <stdio.h>
#include <math.h>
int main(void)
{
int i=0,n,r,s,k;
scanf ("%d%d", &n, &r);
int a[n];
for (i=0; i<n; i++)
scanf ("%d", &a[i]);
k=0;
s=fabs(a[k]+a[k+1]-r);
for (i=1; i<n-1; i++)
{
if (fabs(a[i]+a[i+1]-r)<s)
{
s=fabs(a[i]+a[i+1]-r);
k=i;
}
}
printf ("%d %d\n", a[k], a[k+1]);
return 0;
}