Ricerca appunti sul web

Ricerca personalizzata

giovedì 26 febbraio 2009

Sorgenti c : Anagramma

/* Scrivere una funzione che prese in input due stringhe, A, B stampi 1 se B `e un
anagramma di A e 0 altrimenti. */

#include <stdio.h>

int anagramma(char *, char *);

int main()
{
char stringa1[255];
char stringa2[255];

scanf("%s", stringa1);
scanf("%s", stringa2);
printf("%d", anagramma(stringa1, stringa2));
return 0;
}

int anagramma(char *s1, char *s2)
{
/*variabili*/
int i=0;
int j=0;
int k=0;
int z=0;
int uguali;
char temp;

/* conta stringa1 */
while (s1[k] != '')
{
k++;
}
/* conta stringa2 */
while (s2[z] != '')
{
z++;
}

if (k!=z)
return 0;

/* ordina la stringa1 */
for(i=0;i<k-1;i++)
for(j=0; j<k-1-i; j++)
if (s1[j]>s1[j+1])
{
temp=s1[j];
s1[j]=s1[j+1];
s1[j+1]=temp;
}
/* ordina la stringa2 */
for(i=0;i<k-1;i++)
for(j=0; j<k-1-i; j++)
if (s2[j]>s2[j+1])
{
temp=s2[j];
s2[j]=s2[j+1];
s2[j+1]=temp;
}
/* se stringa 1 è uguale a stringa 2 allora s1 anagramma di s2*/
uguali = 1;
i=0;
while (i<k && uguali==1)
if (s1[i]==s2[i])
i++;
else uguali=0;

if (uguali==1)
return 1;
else return 0;
}

0 commenti: