Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<fstream>
- using namespace std;
- //Anagramy to wyrazy, które składają się z tych samych liter np. aaabb i abbaa
- // funkcja przyjmująca dwa wyrazy (skladajace się ze znaków a-z i A-Z) i sprawdza czy wyrazy sa anagramami)
- bool czyAnagramy(string wyraz1, string wyraz2){
- int n1= wyraz1.size();
- int n2= wyraz2.size();
- if(n1!=n2){
- return false;
- }
- int ileZnakowWyraz1[26], ileZnakowWyraz2[26];
- //zerowanie tablic
- for(int i=0;i<26;i++){
- ileZnakowWyraz1[i]=0;
- ileZnakowWyraz2[i]=0;
- }
- //zliczanie liter
- for(int i=0;i<n1;i++){
- if(wyraz1[i]>='a' && wyraz1[i] <='z'){
- //dla małych liter
- ileZnakowWyraz1[ (int) wyraz1[i] -97]++;
- }else{
- //dla wielkich liter
- ileZnakowWyraz1[ (int) wyraz1[i] -65]++;
- }
- if(wyraz2[i]>='a' && wyraz2[i] <='z'){
- //dla małych liter
- ileZnakowWyraz2[ (int) wyraz2[i] -97]++;
- }else{
- //dla wielkich liter
- ileZnakowWyraz2[ (int) wyraz2[i] -65]++;
- }
- }
- //sprawdzanie zgodności tablic (identyczność tablic)
- for(int i=0;i<26;i++){
- if(ileZnakowWyraz1[i] !=ileZnakowWyraz2[i]){
- return false;
- }
- }
- return true;
- }
- int main(){
- string w1,w2;
- cout<<"Podaj napis 1"<<endl;
- cin >>w1;
- cout<<"Podaj napis 2"<<endl;
- cin >>w2;
- cout<<czyAnagramy(w1,w2)<<endl;
- //zamiana liter na indeksy tablicy
- //kody znaków
- //cout << (int) 'a' <<endl; //97
- //cout << (int) 'b' <<endl; //98
- //cout << (int) 'a' -97 <<endl; //0
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement