#include #include int anagramma(char *a, char *b) { int i, j, k=0, dim1=0, dim2=0; char c[100], d[100]; // elimina doppie in stringa 1 for(i=0; a[i]!='\0'; i++) { for(j=i+1; a[j]!='\0'; j++) { if(a[i]==a[j]) a[j]=' '; } } //printf("%s", a); // solo alfa j=0; for(i=0; a[i]!='\0'; i++) { if(isalpha(a[i])!=0) c[j]=tolower(a[i]), j++; } c[j]='\0'; //printf("%s\n", c); for(j=0; c[j]!='\0'; j++) dim1++; for(i=0; b[i]!='\0'; i++) for(j=i+1; b[j]!='\0'; j++) { if(b[i]==b[j]) b[j]=' '; } j=0; for(i=0; b[i]!='\0'; i++) { if(isalpha(b[i])!=0) d[j]=tolower(b[i]), j++; } for(j=0; d[j]!='\0'; j++) dim2++; for(i=0; c[i]!='\0'; i++) {for(j=0; d[j]!='\0'; j++) {if(c[i]==d[j]) k++;}} //printf("%d\n", k); if((k==dim1)&&(k==dim2)) return k; else return k=0; } int main() { char st[100], str[100]; int x; printf("inserisci una stringa: "); scanf("%[A-Za-z '!.,;?0-9]", st); getchar(); printf("inserisci una stringa: "); scanf("%[A-Za-z '!.,;?0-9]", str); getchar(); x=anagramma(st, str); printf("il numero di caratteri comuni รจ %d\n", x); //questa soluziona manca di un controllo if (se 0 lettere comuni //stampa "non sono anagrammi" altrimenti "sono anagrammi di tot lettere") return 0; }