Programma anagramma in C

di il
1 risposte

Programma anagramma in C

Ciao devo scrivere un programma per stabilire se due parole sono anagrammi. Potreste correggermelo? mi dice sempre "Non sono anagrammi l'una dell'altra". è come se se ne fregasse della condizione data ossia if (x==y)... io avevo pensato di sommare i codici ascii, si fa così? non usate perfavore comandi come cout o roba simile poichè non li h ancora visti!



#include<stdio.h>
#include <string.h>
int main () {
char str1[30], str2[30];
int x=0, y, i, long1, long2;

printf("Inserire prima parola: ");
scanf("%s", str1);
printf("Inserire seconda parola: ");
scanf("%s", str2);

long1=strlen(str1);
long2=strlen(str2);


if (long1==long2) {
for (i=0; i<long1; ++i) {
x=str1+x;
}
for (i=0; i<long2; ++i) {
y=str2+y;
}
if (x==y) {
printf("%c e' anagramma di %c", str1, str2);
}
else { printf("Non sono anagrammi l'una dell'altra"); }
}
else printf("Le due parole non sono l'una anagramma dell'altra.");

return 0;
}

1 Risposte

  • Re: Programma anagramma in C

    Un esempio parziale; manca il test se anche la seconda parola si ritrova nella prima:
    #include <stdio.h>
    #include <conio.h>
    int main(int argc, char* argv[]) {
      char* s1="bibliotecario";
      char* s2="beato con i libri";
      int i, j, ct1, ct2;
      int long1=strlen(s1), long2=strlen(s2);
      for (i=0; i<long1; ++i) {
    	char c1=s1[i];
    	if (c1>32) {
    		ct1=0, ct2=0;
    		for (j=0; j<long1; ++j) {
    			if (c1==s1[j]) ct1++;
    			}
    		for (j=0; j<long2; ++j) {
    			if (c1==s2[j]) ct2++;
    			}
    		if (ct1!=ct2 || ct2==0)
    			{
    			 printf("[%c]: %i<>%i\n", c1, ct1, ct2);
    			 break;
    			}
    		else
    			 printf("[%c]: %i=%i\n", c1, ct1, ct2);
    	}
      }
      if (ct1==ct2)
    	puts("anagramma?");	// ma la "n" di "con" non è stata presa in considerazione...
      else
    	puts("non è un anagramma");
      _getch();
    }
    
Devi accedere o registrarti per scrivere nel forum
1 risposte