Fie x,y doua siruri de caractere. Scrieti un program recursiv care sa testeze daca sirul y este o anagrama a lui x.
exemple: sirurile 'abcd' si 'dabc' sunt anagrame.
Răspunsuri la întrebare
Răspuns de
1
int anagrame(char sir1[], char sir2[]) {
if(strlen(sir1) == 0)
return strlen(sir2) == 0;
char copieSir1[100], copieSir2[100];
strcpy(copieSir1, sir1);
strcpy(copieSir2, sir2);
char primCaracter = sir1[0];
// eliminam primul caracter din copieSir1
strcpy(copieSir1, copieSir1 + 1);
// cautam primCaracter in copieSir2
int gasit = 0, poz = 0, lungimeSir2 = strlen(copieSir2);
for(poz = 0; poz < lungimeSir2; poz++)
if(copieSir2[poz] == primCaracter) {
gasit = 1;
break;
}
if(gasit == 0)
return 0;
strcpy(copieSir2 + poz, copieSir2 + poz + 1);
return anagrame(copieSir1, copieSir2);
}
if(strlen(sir1) == 0)
return strlen(sir2) == 0;
char copieSir1[100], copieSir2[100];
strcpy(copieSir1, sir1);
strcpy(copieSir2, sir2);
char primCaracter = sir1[0];
// eliminam primul caracter din copieSir1
strcpy(copieSir1, copieSir1 + 1);
// cautam primCaracter in copieSir2
int gasit = 0, poz = 0, lungimeSir2 = strlen(copieSir2);
for(poz = 0; poz < lungimeSir2; poz++)
if(copieSir2[poz] == primCaracter) {
gasit = 1;
break;
}
if(gasit == 0)
return 0;
strcpy(copieSir2 + poz, copieSir2 + poz + 1);
return anagrame(copieSir1, copieSir2);
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Geografie,
8 ani în urmă
Limba română,
9 ani în urmă
Engleza,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă