/* atk1 h8t5 */ #include /* string.h:sta löytyisi valmis funktio merkkijonojen vertailuun, mutta tehdään vertailu itse. rajoitutaan vertailemaan merkkijonoissa esiintyviä pieniä kirjaimia */ #define N 200 /* palauttaa 1 jos a:ssa ja b:ssä on samat kirjaimet, 0 muuten */ int compare_strings(char a[],char b[]); main() { char a[N],b[N],c; int i=0; printf("Enter a sequence of lower case letters:\n"); while( (c=getchar()) != '\n' ) { a[i]=c; i++; } a[i]='\0'; printf("\nNow, put a blindfold on and try typing the same letters (in any order):\n"); i=0; while( (c=getchar()) != '\n' ) { b[i]=c; i++; } b[i]='\0'; printf("\nThe strings "); if(compare_strings(a,b)) printf("match! Congratulations!\n\n"); else printf("don't match. Too bad...\n\n"); } int compare_strings(char a[],char b[]) { /* toteutetaan vertailu laskemalla kirjainten määrät */ int letters_a[26]={0},letters_b[26]={0},i,same=1; /* lasketaan eri kirjainten esiintymismäärät */ for(i=0;a[i]!='\0';i++) { if('a'<=a[i] && a[i]<='z') letters_a[a[i]-'a']++; if('a'<=b[i] && b[i]<='z') letters_b[b[i]-'a']++; } /* katsotaan, tuliko kirjaimia sama määrä */ for(i=0;i<26;i++) same *= (letters_a[i]==letters_b[i]); return same; }