Se citesc de la tastatură două cuvinte. Să se verifice dacă unul este anagrama celuilalt.
1) se ordonează literele după codul ASCII, iar apoi se compara sirurile
#include<iostream>2) se inregistrează frecvenţa fiecărei litere în doi vectori de tip întreg, iar mai apoi se "compară" vectorii
using namespace std;
int main()
{int n,nn,i;
char aux,a[100],b[100],*p,*q,m[1][100];
for(i=0;i<2;i++)
cin>>m[i];
strcpy(a,m[0]);
strcpy(b,m[1]);
for(p=a;*p;p++)
for(q=a+1;*q;q++)
if(*p>*q)
{aux=*p;
*p=*q;
*q=aux;}
for(p=b;*p;p++)
for(q=b+1;*q;q++)
if(*p>*q)
{aux=*p;
*p=*q;
*q=aux;}
if(strcmp(a,b)==0)
cout<<"DA";
else cout<<"NU";
}
#include<iostream>3) se şterg, pe rând, literele din primul cuvânt şi(dacă există) din al doilea până când primul tablou(cuvânt) are terminatorul de şir pe poziţia 0. Dacă şirul al doilea are şi el terminatorul de şir pe poziţia 0, atunci cuvintele sunt anagrame. Altfel, nu sunt.
using namespace std;
int main()
{char a[100],b[100],*p;
int i,ok=1,x[26]={0},y[26]={0};
cin.get(a,100);
cin.get();
cin.get(b,100);
strupr(a);
strupr(b);
for(p=a;*p;p++)
x[*p-'A']++;
for(p=b;*p;p++)
y[*p-'A']++;
for(i=0;i<26;i++)
if(x[i]!=y[i])
ok=0;
if(ok==1)
cout<<"DA";
else cout<<"NU";
}
#include<iostream>
using namespace std;
int main()
{char a[100],b[100],*p,*q,r;
int i,ok=1,x[26]={0},y[26]={0},t,j;
cin.get(a,100);
cin.get();
cin.get(b,100);
strupr(a);
strupr(b);
p=a;
while(a[0]!=NULL)
{for(i=0;i<strlen(a);i++)
{ r=a[i];
for(j=i;j<strlen(a);j++)
a[j]=a[j+1];
for(t=0;t<strlen(b);t++)
{ if(b[t]==r)
for(j=t;j<strlen(b);j++)
b[j]=b[j+1];
}
}
}
if(b[0]==0)
cout<<"DA";
else cout<<"NU";
}