19-06-2009, 20:37
|
|
|
|
חבר מתאריך: 21.12.04
הודעות: 30,021
|
|
הקוד שלך בסדר גמור...
קוד PHP:
#include <stdio.h>
int strg(char* s1, char* s2);
int main() { int result = 0; char s1[] = "aaabcc"; char s2[] = "bcaaac";
char s3[] = "abb"; char s4[] = "caa";
/*should return 1*/ printf ("result is: %d\n", result = strg(s1, s2)); /*should return 0*/ printf ("result is: %d\n", result = strg(s3, s4)); scanf ("%c",&s1[0]); return 0; }
int strg(char* s1, char* s2) {
char array1[256]={0}; char array2[256]={0}; int i;
for(i=0;s1[i]!=0;i++) array1[(s1[i])]=1;
for(i=0;s2[i]!=0;i++) array2[(s2[i])]=1;
for(i=0;i<256;i++) if((array1[i]==1 && array2[i]==0) || (array2[i]==1 && array1[i]==0)) return 0; return 1; }
ניתן לראות כי כל עוד המחרוזות מחזיקות את אותן האותיות, אתה מקבל ש result מחזיק 1.
במידה והמחרוזות מחזירות אותיות שונות, result מחזיק 0.
בדוגמא שלך, שתי המחרוזות מכילות את אותן תווים ולכן אתה תמיד מקבל 1. תנסה לשנות את המחרוזת השניה במקום baa ל caa כמו שצירפתי למעלה, תדפיס את result ותראה שהכל סבבה.
בהצלחה!
|