/* Nome: Mario Cognome: Montanari isAnagram */ #include #include #include #define SIZE 100+1 #define NUM_LETT 26 using namespace std; bool isAnagram(char *src1, char *src2); int main(void) { char src1[SIZE]; char src2[SIZE]; cout << "Prima parola: "; cin.getline(src1, SIZE); cout << "Seconda parola: "; cin.getline(src2, SIZE); if (isAnagram(src1, src2)) { cout << "Le due parole sono anagrammi." << endl; } else { cout << "Le due parole non sono anagrammi." << endl; } return 0; } bool isAnagram(char *src1, char *src2) { for (int i = 0; i < strlen(src1); i++) { src1[i] = tolower(src1[i]); } for (int i = 0; i < strlen(src2); i++) { src2[i] = tolower(src2[i]); } if (strlen(src1) != strlen(src2)) { return false; } for (int i = 0; i < strlen(src1); i++) { if (strchr(src2, src1[i]) == NULL) { return false; } } int count[26] = {0}; for (int i = 0; i < strlen(src1); i++) { count[tolower(src1[i]) - 'a']++; count[tolower(src2[i]) - 'a']--; } for (int i = 0; i < NUM_LETT; i++) { if (count[i] != 0) { return false; } } return true; }