Informatică, întrebare adresată de Utilizator anonim, 8 ani în urmă

#301 Frecventa1 pe pbinfo.ro

Cerinţa
Se dau n numere naturale cu cel mult două cifre fiecare. Afişaţi valorile distincte în ordinea descrescătoare a numărului de apariţii.
Date de intrare
Fişierul de intrare frecventa1.in conţine pe prima linie numărul n; urmează cele n numere, dispuse pe mai multe linii şi separate prin spaţii.
Date de ieşire
Fişierul de ieşire frecventa1.out va conţine pe prima linie valorile distincte dintre cele n, în ordinea descrescătoare a numărului de apariţii.
Restricţii şi precizări
1 ≤ n ≤ 100000
dacă două valori apar de acelaşi număr de ori, se va afişa mai întâi valoarea mai mică


Exemplu
frecventa1.in
8
3 19 3 65 3 19 14 3
frecventa1.out
3 19 14 65

Imi poate spune cineva ce am gresit va rog?

Anexe:

Răspunsuri la întrebare

Răspuns de boiustef
0

Răspuns:

#include <iostream>

#include <fstream>

#include <algorithm>

using namespace std;

struct data

{

   int nr,

   ap;

}v[101];

bool descr(const data &a, const data &b)

{

   if (a.ap != b.ap) return (a.ap>b.ap);

   return (a.nr<b.nr);

}

int main()

{

   ifstream f("frecventa1.in");

   ofstream g("frecventa1.out");

   int n, i, num;

   f >> n;

   for (i=0; i<100; ++i) v[i].nr=i;

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

   {

       f >> num;

       ++v[num].ap;

   }

   sort(v, v+100, descr);

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

       if (v[i].ap) g << v[i].nr << " ";

   return 0;

}

Explicație:

Alte întrebări interesante