Informatică, întrebare adresată de aa1, 9 ani în urmă

Se da un șir de numere sa se afișeze cele mai mici 5 numere.
Hint: doi vectori.

Răspunsuri la întrebare

Răspuns de Danutt44
5

Te rog pe viitor sa fii mai explicit... Avand in vedere ca o poti face doar cu un singur vector, enuntul nu este foarte clar.

Problema:

#include <iostream>

using namespace std;

int main()

{

   //initializare

   int n,i,j,v[100],aux,b[100],contor=0;

   //Citire;

   cin>>n;

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

       cin>>v[i];

   //rezolvare

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

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

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

   {

       aux=v[i];

       v[i]=v[j];

       v[j]=aux;

   }

   //copiere

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

       {

       contor++;

       b[contor]=v[i];

       }

//afisare

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

           cout<<b[i]<<" ";


//Doresc sa mentionez ca problema asta se poate face in multe feluri , am ales cel mai usor fel din simplu fapt ca este mai usor de inteles.

!Daca doresti sa o faci fara nici o copiere al altui vector, pur si simplu afisezi.

}


gabi54t: merge si cu vector de frecventa dar doar daca numerele sunt pozitive cred
Danutt44: Corect , din punct de vedere al memoriei este mult mai recomandat sa lucrezi cu variabile (min1,min2... min5)... Dar asta la o scara mult mai larga in care ai nevoie de eficienta si utilizarea memoriei...
Răspuns de gabi54t
2

#include <iostream>


using namespace std;

int vf[10000];

int main()

{

   int i, n, v[1000], j=0;


   cin>>n;

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

   {

       cin>>v[i];

       vf[v[i]]++;

   }


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


       if(vf[i]>0)

       {

           if(j==5)

               break;

           j++;

           cout<<i<<" ";

       }


   return 0;

}


asta merge doar pentru numere naturale dar ti-l las in caz de vrei sa vezi un alt mod (sort of) de a rezolva problema

Alte întrebări interesante