Находим два наиболее близких друг к другу числа

Задача:
Дан некоторый массив целых чисел. Необходимо найти два наиболее близких друг к другу числа из этого массива.
Под «близких друг к другу» подразумеваются такие числа, разность которых по абсолютной величине имеет минимальное значение.

А Вот и решение:
#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;
}

Поблагодарить автора

Оставить комментарий

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>