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

Sa zicem ca avem un vector cu n numere naturale si vrem sa afisam de cate ori apare fiecare numar. De exemplu:
pentru n=10 avem:
1 2 5 1 3 2 4 5 1 4 si se va afisa 3 2 1 2 2;
3= apare de 3 ori numarul 1
2= apare de 2 ori numarul 2
1 = apare o data numarul 3
2 = apare o data numarul 4
2 = apare o data numarul 5
Dar trebuie sa se afiseze in ordine crescatoare. Pe prima pozitia se afiseaza de cate ori apare numarul mai mic(in exemplu e 1), dupa al doilea(adica 2) si asa mai departe.
Multumesc anticipat!

Răspunsuri la întrebare

Răspuns de express
0
Problema ta se rezolva usor cu vector de frecventa. Desi n-ai specificat cat de mare poate sa fie un numar din vectorul dat eu am considerat ca ar putea fi de cel mult 4 cifre <= 9999. Ai o rezolvare in C++. Succes!

#include <iostream>
using namespace std;
int n, i, x, v[10002], minn = 10002, maxx;
int main()
{
    cin >> n;
    for(i = 1; i <= n; i ++)
     {
         cin >> x;
         v[x] = v[x] + 1;
         if(x < minn) minn = x;
         if(x > maxx) maxx = x;
     }
     for(i = minn; i <= maxx; i ++)
      if(v[i] > 0) cout << i << " apare de " << v[i] << " ori" << "\n";
    return 0;
}


The4Ever: Multumesc mult! :)
Alte întrebări interesante