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

am și eu nevoie de rezolvare și explicație la pb cu șiruri de caractere. Mulțumesc! ​

Anexe:

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

#include <cstring>

using namespace std;

char fraza1[101], fraza2[101];

short n1, n2, i, vf1[30],vf2[30];

int main()

{

   cin.getline(fraza1,101);

   n1=strlen(fraza1);

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

       if (fraza1[i]>='a' and fraza1[i]<='z') ++vf1[(int)fraza1[i]-97];

   cin.getline(fraza2,101);

   n2=strlen(fraza2);

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

       if (fraza2[i]>='a' && fraza2[i]<='z') ++vf2[(int)fraza2[i]-97];

   short ok=1;

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

   {

       if (vf1[i]!=vf2[i]) { ok=0; break; }

   }

   if (ok) cout << "DA";

   else cout << "NU";

}

Explicație:

am completat vectori de frecventă a literelor din fraze şi verificare că au aceleaşi frecvenţe


boiustef: cred îţi va fi de folos pagina
https://mchelariu.wordpress.com/2015/10/11/tipul-caracter-2/
pentru lucrul cu caracterele
elena1217: mulțumesc!
elena1217: mai am o intrebare
elena1217: de ce ai pus la vf - 97? ce reprezintă?
boiustef: dacă citeşti atent pagina la care am dat link-ul afli că litera 'a' are codul 97, deci scăzând 97 eu indexsez vectorul de frecvenţă, litrei 'a' i se rezervă poziţia 0, literei 'b', poziţia 1 şamd
boiustef: (int)fraza1[i] află codul literei
boiustef: litera 'z' are codul 122, deci se poate de declarat vectorul de frecvenţă de dimensiune 123, adică
char vf1[123], vf2[123];
dar am vrut să declar vectori mai mici, deaceea am scăzut 97
boiustef: am fost explicit? :))) , succese
elena1217: am înțeles, mulțumesc încă o data pt tot!
Alte întrebări interesante