View Single Post
ישן 06-11-08, 00:27   # 5
SDF
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Sep 2006
מיקום: Negev
הודעות: 270

SDF לא מחובר  

אז אין צורך בפלוס אחד,
נניח ויש לך המילה ABA,
str[0] = A
str[1] = B
str[2] = A
סה"כ מילה בת 3 אותיות, כשהאינדקס האחרון הוא 2, אתה חורג שם מהגבול.

ובכל מקרה, הלולאה הפנימית (זאת עם הZ) בודקת כמה פעמים מופיעה אות ספציפית מהמטריצה
במחרוזת, מעבר לזה זה לא נותן לך כלום.

אני מציע דבר כזה:
שני לולאות שרצות על המטריצה. אינדקס שלישי שומר על האינדקס של המילה המבוקשת, ברגע שאתה
מוצא שהאות הנוכחית במטריצה שווה לאות הרשונה במחרוזת תתחיל לקדם את האינדקס של המילה,
אם אתה רואה שאין שווין לפני שאתה מגיע לסוף של המילה, אפס את האינדקס.
אם הגעת לסוף המילה בהצלחה, אז יופי טופי, ספור אותה.

אם לא היה ברור, הנה ההתחלה של הפונקציה לחיפוש מילה:
קוד:
int searchMatrix(char **mat, int x, int y, char * what)
{
	int length = strlen(what);
	int i, j, whatIndex = 0;
	int foundCounter = 0;
__________________
FreeBSD, a *nix operating system
  Reply With Quote