Anagramy


#include<iostream>
#include<string>
 
using namespace std;
 
bool czy_anagram(string a, string b)
{
	//wyznaczenie liczby liter w slowie a i w slowie b
  	int dl1 = a.size();
  	int dl2 = b.size();
  	//jesli dlugosci wyrazów nie sa równe, to nie moga
  	//byc anagramy
	if(dl1!=dl2)return false;
 
  	int licz[127]={}; //zerujemy licznniki
  	for(int i=0;i<dl1;i++)
  		licz[a[i]]++; //zliczamy litery pierwszego wyrazu
  	for(int i=0;i<dl1;i++)
  		licz[b[i]]--; //odejmowanie wystapien liter
 
  	for(int i=0;i<127;i++)
  		if(licz[i]!=0) //jesli ktorys licznik sie nie wyzerowal
			return false; //to oznacza, ze słowa nie sa anagramami
 
  return true; //jesli wszystkie liczniki sie wyzerowały, to mamy anagramy
}
 
int main()
{
 
   string a, b; //dwa słowa, maksymalnie 100 znaków
   cout<<"Podaj dwa wyrazy: ";
   cin>>a>>b;
 
   if(czy_anagram(a,b))
     cout<<"Podane wyrazy sa anagramamin";
   else
     cout<<"Podane wyrazy nie są anagramamin";
 
  return 0;
}



Wróć do spisu tematów