Anagramma

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
ABBA
NO
ABBA
BABA
SI

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;
}

Lascia un commento