Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 16.10.2020
Сообщений: 47
1

Определить номера двух элементов массива разность зачений которых минимальна

04.03.2022, 16:14. Показов 573. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Напишите программу, которая заполняет массив из N элементов случайными целыми числами в диапазоне [ A , B ] и определяет номера двух элементов этого массива, которые расположены ближе всех друг к другу на числовой оси. Эти элементы не обязательно должны быть расположены рядом друг с другом. Если таких пар несколько, нужно вывести номера элементов самой последней из таких найденных пар.

Примеры
входные данные
10 100 15
выходные данные
59 63 75 86 64 88 59 87 48 66 68 44 49 37 91
1 7

я написал массив заполненный рандомными числами и отсортировал его по возрастанию, но не могу понять как сравнить и найти минмальную пару
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;
int main()
{
   int n,b,c;
   cin>>c;
   cin>>b;
   cin>>n;
   vector <int> a(n);
   for (int i=0;i<n;i++)
   {
       a[i]=rand()%(b-c)+c;
       cout<<a[i]<<" ";
   }
   sort(a.begin(),a.end());
   
   for (int i=0;i<n;i++){
    
   }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2022, 16:14
Ответы с готовыми решениями:

Найти номера двух элементов массива, сумма которых минимальна
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые...

Найти и вывести номера двух элементов массива, сумма которых минимальна
Дан целочисленный массив из 40 элементов. Элементы могут принимать произвольные значения. Найти и...

Поиск номера первого из двух последовательных элементов массива, сумма которых минимальна
Опишите на языке программирования алгоритм поиска номера первого из двух последовательных элементов...

Найти номера двух соседних столбцов, сумма элементов в которых минимальна
1. Дан двумерный массив из двух строк и пятнадцати столбцов. Найти номера двух соседних столбцов,...

4
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
05.03.2022, 09:34 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <algorithm>
#include <vector>
#include <random>
#include <functional>
#include <ctime>
#include <limits>
#include <cmath>
 
int main()
{
    int const n = 10, a = -10, b = 10;
    std::vector<int> vct(n);
    std::mt19937 eng{(unsigned)time(nullptr)};
    std::uniform_int_distribution uid{a, b};
    std::generate_n(vct.begin(), vct.size(), std::bind(std::ref(uid), std::ref(eng)));
    for (auto val : vct)
    {
        std::cout << val << " ";
    }
    std::cout << "\n";
    decltype(vct) svct = vct;
    std::sort(svct.begin(), svct.end());
    std::cout << "sorted vector:\n";
    for (auto val : svct)
    {
        std::cout << val << " ";
    }
    std::cout << "\n";
    std::vector<int> vp(svct.begin(), svct.begin() + 2);
    for (auto ib{ svct.begin() + 1 }, ie{ svct.end() }; ib != (ie - 1); ++ib)
    {
        if (abs(ib[0] - ib[1]) == abs(vp[0] - vp[1]))
        {
            vp.insert(vp.end(), ib, ib + 2);
        }
        else if (abs(ib[0] - ib[1]) < abs(vp[0] - vp[1]))
        {
            vp.clear();
            vp.insert(vp.end(), ib, ib + 2);
        }
    }
    std::cout << "vector pair:\n";
    for (auto val : vp)
    {
        std::cout << val << " ";
    }
    std::cout << "\n";
    int ind1{}, ind2{};
    for (auto ibr{ vct.rbegin() }, ier{vct.rend()}; ibr != ier; ++ibr)
    {
        if (auto it = std::lower_bound(vp.begin(), vp.end(), *ibr); it != vp.end() && *it == *ibr)
        {
            ind1 = (ier - ibr) - 1;
            int num2 = (it - vp.begin()) % 2 ? it[-1] : it[1];
            auto itrn2 = std::find(ibr + 1, ier, num2);
            std::cout << "Answer:\n";
            std::cout << (ier - itrn2 - 1) + 1 << "  " << ind1 + 1 << "\n";
            break;
        }
    }
    
}
1
1 / 1 / 0
Регистрация: 16.10.2020
Сообщений: 47
07.03.2022, 11:44  [ТС] 3
не рабоает
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
07.03.2022, 11:59 4
скриншот есть? с пояснением где не работает
0
1 / 1 / 0
Регистрация: 16.10.2020
Сообщений: 47
08.03.2022, 14:44  [ТС] 5
я не знаю как вставить фото
может обьяснить алгеритм нахождения ближайшего числа
0
08.03.2022, 14:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2022, 14:44
Помогаю со студенческими работами здесь

Найти номера двух соседних столбцов, сумма элементов в которых минимальна
Дан двумерный массив из двух строк и пятнадцати столбцов. Найти номера двух соседних столбцов,...

Найти номера двух соседних строк, сумма элементов в которых минимальна
Дан двумерный массив из пятнадцати строк и двух столбцов. Найти номера двух соседних строк, сумма...

Найти номера двух соседних столбцов матрицы, у которых сумма элементов минимальна
Всем доброго времени суток. У меня небольшая проблема: Есть задачка: дам двумерный массив, нужно...

Найти номера двух соседних столбцов матрицы, сумма элементов в которых минимальна
Дано двумерный массив, из двух рядов и 15 столбиков. Найти номера двух соседних столбиков, сумма...

Найти номера двух соседних столбцов матрицы, сумма элементов в которых минимальна
Дан двумерный массив из двух строк и пятнадцати столбцов. Найти номера двух соседних столбцов,...

Написать программу, выполняющую поиск двух элементов заданного массива,таких,что их разность по модулю минимальна
program Zad1; var x:array of real; n:byte; i:integer; begin writeln('Vvedite...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru