Napisz program który po wczytaniu 20 liczb dodatnich całkowitych znajdzie wśród nich parę liczb o najmniejszej różnicy.
Proszę o pomoc! ​Zadanie C++


Odpowiedź :

Odpowiedź:

#include <bits/stdc++.h>

using namespace std;

int main()

{

   const int n = 20;

   int tab[n],MIN;

   vector<pair<int,int>>Pary;

   int i;

   for(i = 0;i < n;i++)

       cin>>tab[i];

   cout<<"Wpisane liczby: ";

   for(i = 0;i < n;i++)

       cout<<tab[i]<<" ";

   cout<<endl;

   sort(tab,tab + n);

   MIN = tab[1] - tab[0];

   Pary.push_back(make_pair(tab[0],tab[1]));

   for(i = 2;i < n;i++)

       if(tab[i] - tab[i-1] < MIN)

       {

           Pary.clear();

           MIN = tab[i] - tab[i-1];

           Pary.push_back(make_pair(tab[i-1],tab[i]));

       }

       else if(tab[i] - tab[i-1] == MIN)

           Pary.push_back(make_pair(tab[i-1],tab[i]));

   cout<<"Najmniejsza roznica to "<<MIN<<endl;

   cout<<"Pary o najmniejszej roznicy to:"<<endl;

   for(i = 0;i < Pary.size();i++)

       cout<<Pary[i].first<<" i "<<Pary[i].second<<endl;

   return 0;

}

Wyjaśnienie:

W zadaniu nie ma informacji, że chodzi o pary kolejnych liczb więc program wyszukuje taką kombinację liczb, która tworzy parę o najmniejszej różnicy. Jeśli jest kilka par o takiej samej, najmniejszej, różnicy to wszytkie takie pary zostaną wypisane.