Задача:
Дан некоторый массив целых чисел. Необходимо найти два наиболее близких друг к другу числа из этого массива.
Под «близких друг к другу» подразумеваются такие числа, разность которых по абсолютной величине имеет минимальное значение.
А Вот и решение:
#include <iostream>
#include <cmath>
int main()
{
const int SIZE = 10; // размер массива чисел
int arr[SIZE] = {0,15,42,34,21,54,112,325,76,3};
int r = abs(arr[0] - arr[1]); // запоминаем разность первых двух чисел массива...
int index1 = 0, index2 = 1;// ... и их индексы
for (int i = 0; i < SIZE-1; i++) //ищем такие пары чисел, разность которых меньше, чем разность первых двух
{
for (int j = i+1; j < SIZE; j++)
{
if (j == 1) continue; // не проверяем первые 2 числа, так как они были проверены в начале программы
int tmp_r = abs(arr[i] - arr[j]);
if (tmp_r < r) // если разность меньше r, то запоминаем индекс новых чисел
{
r = tmp_r;
index1 = i;
index2 = j;
}
}
}
std::cout <<arr[index1]<<" and " <<arr[index2];
return 0;
}