Ciao! devo realizzare un programma che prenda due stringhe,le confronti e determini se sono anagrammi.In pratica vuole semplicemente che si verifichi se entrambe le frasi sono costituite dalle stesse lettere.Solo i caratteri alfabetici bisogna controllare:
codice:
#include <stdio.h>#include <stdlib.h>
#define N 15
int main()
{
char string1[N];
char string2[N];
int i,j,c,count,d,verify;
printf("\n\n inserire frase\n\n");
gets(string1);
c=0;
for(i=0;i<N;i++)
{
if(string1[i]>='A' && string1[i]<='Z')
{
c++;
}
}
char string1a[c];
char string2a[c];
for(i=0;i<c;i++)
{
if(string1[i]>='A' && string1[i]<='Z')
{
string1a[i]=string1[i];
}
}
printf("\n\n inserire frase da confrontare\n\n");
gets(string2);
d=0;
for(i=0;i<N;i++)
{
if(string2[i]>='A' && string2[i]<='Z')
{
d++;
}
}
for(i=0;i<d;i++)
{
if(string2[i]>='A' && string2[i]<='Z')
{
string2a[i]=string2[i];
}
}
for(i=0;i<c;i++)
{
printf("%c",string1a[i]);
}
if(d==c)
{
i=0;
verify=0;
do
{
j=0;
count=0;
do
{
if(string1a[i]==string2a[j])
{
verify++;
count++;
string2a[j]=0;
}
j++;
}
while(count==0 && j<c);
i++;
}
while(i<c);
if(verify==c)
{
printf("\n\n sono anagrammi!\n\n");
}
}
else
{
printf("\n\n non sono anagrammi!\n\n");
}
system("pause");
return 0;
}
Questo è quanto ho scritto ma non senza problemi......A un certo punto ho messo la stampa di string1a,come si può notare vengono stampati dei valori che non c'entrano nulla e non capisco dove vada a prenderli sinceramente,credevo che la condizione per verificare che i caratteri siano solo lettere maiuscole fosse giusta....ed effettivamente penso sia così,perchè stampando i contatori i valori tornano,è nel momento in cui a string1a vengono assegnati i valori di string1 che succede qualche casino.Sapete dove ho sbagliato?
non entra nemmeno nel dowhile.....
Grazie mille...