Problemă rezolvată șir de caractere clasa a XI-a mate-info neintensiv #6

Enunț

Se citește de la tastatură un șir de maxim 70 caractere. Să se afișeze, unul sub altul, caracterele distincte din șir împreună cu frecvențele lor de apariție. Pe fiecare rând se va afișa un caracter urmat de frecvența sa în șir (prin frecvența de apariție a unui caracter se înțelege de câte ori apare caracterul respectiv în șir). Exemplu: Dacă se citește șirul „abracadabra”, programul a afișa ceea ce apare în figură.

Rezolvare

#include
#include
using namespace std;


int main()
{
 char s[71];
 int l;


 cout << "Introduceti un sir: ";
 cin >> s;


 l = strlen(s);

 char caractere[30];
 int lCaractere = 0;


 int frecvente[30];

 for (int i = 0; i < l; ++i)
 {
  bool existaDeja = false;
  for (int j = 0; j < lCaractere; ++j)
  {
   if (caractere[j] == s[i])
   {
    existaDeja = true;


    ++frecvente[j];

    break;
   }
  }


  if (!existaDeja)
  {
   ++lCaractere;
   caractere[lCaractere – 1] = s[i];
   frecvente[lCaractere – 1] = 1;
  }
 }


 for (int i = 0; i < lCaractere; ++i)
 {
  cout << caractere[i] <   ” << frecvente[i] << endl;
 }


 return 0;
}

Vizual

Explicații

O implementare alternativă ar folosi clasa map din S.T.L.

Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare /  Schimbă )

Fotografie Google

Comentezi folosind contul tău Google. Dezautentificare /  Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare /  Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare /  Schimbă )

Conectare la %s

%d blogeri au apreciat: