Verificare daca doua cuvinte sunt anagrame – siruri de caractere C++

Sa se verifice daca doua cuvinte citite de la tastatura sunt anagrame. Doua cuvinte sunt anagrame daca ele contin aceleasi caractere, dar intr-o ordine diferita. Ex : ‘informatica’ si ‘romaticafin’. Pentru aceasta, am sortat cele 2 cuvinte si le-am comparat cu functia strcmp.

Exemplu:

Spor la lucru! Daca aveti intrebari nu ezitati sa le lasati in comentarii, va vom raspunde cat de repede putem 🙂

4 Comments

    1. Salut! Trebuie sa declari un vector sa zicem frecv[25] (presupunem ca nu avem decat
      litere mici ale alfabetului englez). Dupa care, parcurgi primul cuvant litera cu litera
      si la fiecare iteratie faci frecv[a[i] – ‘a’]++. Acum in vectorul frecv[] o sa ai frecventele din primul cuvant. In continuare, parcurgi al doilea cuvant si faci frecv[b[i] – ‘a’]– (scazi
      frecventele). La sfarsit nu trebuie decat sa parcurgi vectorul frecventa. Daca vreun
      element e diferit de 0, atunci cuvintele nu sunt anagrame.

      6

      Reply

  1. Mi se pare extrem de ineficient sa sortezi literele cuvintelor in ordine alfabetica si sa compari la final cuvintele date. Problema se poate rezolva mult mai eficient.

    4

    Reply

  2. #include
    #include
    using namespace std;
    char s[100], c[100];
    int i,q=0;
    int main()
    {
    cout<<"s="; cin.get(s,100);
    cin.get();
    cout<<"c="; cin.get(c,100);
    if(strlen(s)==strlen(c))
    {
    for(i=0;i<strlen(s);i++)
    if(strchr(c,s[i])!=0)//daca litera de la indexul i se gaseste in primul cuvant at contorul creste
    q++;
    }
    if(strlen(c)==q)
    cout<<"cuvintele sunt anagrame ";
    else cout<<"cuvintele nu sunt anagrame";
    }

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *