Informatică, întrebare adresată de gabrieldobrinmm, 8 ani în urmă

Realizați un program care, pentru un șir de n numere întregi citit de la tastatură, determină cele mai mici două elemente ale șirului. Acestea vor fi afișate pe un rând de ecran, în ordine descrescătoare, cu un spațiu între ele.
În C++ vă rog.

Răspunsuri la întrebare

Răspuns de SMihai
1

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n, a[100];

   cin >> n;

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

       cin >> a[i];

   int min1 = a[0];

   int min2 = a[1];

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

   {

       if (a[i] < min1)

           min1 = a[i];

       else if (a[i] < min2 && a[i] > min1)

           min2 = a[i];

   }

   if (min1 >= min2)

       cout << min1 << " " << min2;

   else

       cout << min2 << " " << min1;

}

Explicație:

consideri min1 = a[0] // primul element din sir

                min2 = a[1] // al doilea element din sir

parcurgi sirul incepand de la a[2] (a[0] si a[1] deja au fost folosite la min)

si daca a[i] este mai mic decat min1, min1 = a[i]

daca e mai mic decat min2 dar mai mare decat min1, inseamna ca e al doilea element mic din sir, deci min2 = a[i]

Dupa verifici care e mai mare pt a le afisa in ordine descrescatoare

Răspuns de serban1337
1

Răspuns:

Raspuns (cred)

Explicație:

#include <iostream>

using namespace std;

int main()

{

   int s[100];

   int n,i,j,g,h;

   cin>>n;

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

       cin>>s[i];

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

       for(j=1;j<=n;j++)

       if(s[i]>=s[j])

   {

       g=s[i];

       s[i]=s[j];

       s[j]=g;

   }

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

       for(j=1;j<=n;j++)

       if(s[i]>s[j])

   {

       h=s[i];

       s[i]=s[j];

       s[j]=h;

   }

   cout<<h<<' '<<g;

   return 0;

}

IN: 3

     1 3 2

OUT: 2 1

Alte întrebări interesante