Correttore online – Facili
Una stringa di caratteri S1 si dice anagramma di un’altra stringa S2 se la prima può essere ottenuta dalla seconda permutandone i caratteri.
Per esempio, MORA è un anagramma di ROMA mentre MARA non lo è (in quanto i caratteri sono diversi).
Scrivere un programma che riceve due stringhe S1 e S2 e determina se S1 è un anagramma di S2.Dati di input
Il file input.txt è composto da due righe.
La prima riga contiene la stringa S1 e la seconda contiene la stringa S2.
Entrambe le stringhe sono sequenze non vuote, costituite da lettere dell’alfabeto anglosassone codificate in codice ASCII, e la loro lunghezza massima è di 100 caratteri.Dati di output
Il file output.txt contiene una sola riga: la parola SI se S1 è un anagramma di S2, oppure la parola NO in caso contrario.
Esempi di input/output
input.txt output.txt ABAA
ABBANO ABBA
BABASI Autore/i: A.S. Stankevich, ACM ICPC Team St. Petersburg State University of Information technology, Mechanics and Optics.
/* www.valcon.it Correttore online - Esercizi facili - Anagramma */ #include#include #include #include using namespace std; int main() { ifstream fin ( "input.txt"); ofstream fout("output.txt"); string s1,s2; fin >> s1; fin >> s2; sort(s1.begin(), s1.end()); sort(s2.begin(), s2.end()); if(s1 == s2) fout << "SI"; else fout << "NO"; return 0; }
/* www.valcon.it OII - Esercizi facili - Anagramma */ #include#include // qsort() #include // strlen() - strcmp() int cmp(const void* a, const void* b) { char c1=*(char*)a; char c2=*(char*)b; return c1-c2; } int main() { char s1[101]; char s2[101]; FILE* fin =fopen( "input.txt","r"); FILE* fout=fopen("output.txt","w"); fscanf(fin, "%s", s1); fscanf(fin, "%s", s2); // printf("Prima: %s %s %d\n", s1, s2,strcmp(s1,s2)); qsort(s1,strlen(s1),sizeof(char),cmp); qsort(s2,strlen(s2),sizeof(char),cmp); // printf("Dopo: %s %s %d\n", s1, s2,strcmp(s1,s2)); if(strcmp(s1,s2) == 0) risposta="SI"; else risposta="NO"; fprintf(fout, "%s", risposta); return 0; }