עבור לתוכן

פירוק משפט במחרוזת למילים C

Featured Replies

פורסם

למישהו יש רעיון איך אני כותב תוכנית כזו?

הדרכים שחשבתי לא יעילות ואני מגיע איתם למבוי סתום.

התוכנית המקורית אמורה לקבל משפט ממחרוזת ולהציג בטבלה שמחולקת ל26 עמודות (כמספר האלפאבית) ושורות כמספר המילים את המקומות בהם מופיעה האות בכל מילה.

לדוגמא:

עבור המשפט

"I did " אני אמור לקבל את הטבלה הבאה

a b c d e f g h i g k l m....

1

2 13

כלומר האות I מופיעה במילה הראשונה במקום הראשון ובמילה השניה במקום השני ואילו האות D מופיעה במילה השניה (שורה שניה) במקום הראשון והשלישי

לכן חשבתי לפרק את המשפט למילים ולטפל בכל מילה בניפרד,

כל הצעה לכיוון כתיבת תוכנית תתקבל בברכה (האותיות לא אמורות להיות מודפסות אלא רק טבלת מספרים)

פורסם

לא כל כך הבנתי את השאלה

איך התצוגה צריכה להיות?

כמה פעמים האות הופיעה?

או באיזה מקום במילה האות הופיעה?

אם יש הסבר יותר ברור בשביל בנאדם שכבר טעה בהבנת השאלה פעמיים בפורום הזה זה יהיה טוב :)

פורסם

אם אתה ב C הפונקציה strtok אמורה לעשות לך את החיים קלים להפריד משפט למילים לפי רווחים.

ואז אתה כבר מנתח כל מילה בנפרד, המרה לchar יעשה לך את החיים מאוד קלים, טריק קלאסי זה לחסר את התו 'a' מהתו הנוכחי (או 'A' אם זה אות גדולה).

התצוגה זה בעיה די גדולה כי אם אני לוקח משפט כזה "I said aaaaaabbbbbbbbaaaaaa" זה הולך להיות מכוער מאוד.

זה איזהשהוא תרגיל ?

הדרך הכי נוחה שאני יכול לחשוב עליה היא לפני ההדפסה לבדוק עבור כל אות מה כמה פעמים היא מופיעה במקסימום במילה כלשהיא ולפי זה לבנות את הרווחים, שים לב שאתה בקלות יכול לחרוג מה 80 תווים של המסוף אז (אם התרגיל מאפשר) הייתי מדפיס הכל לקובץ כי זה יראה יותר טוב בלי מגבלת 80 התווים.

פורסם
  • מחבר

אני אנסה לחדד את השאלה (גם לי לקח שעה עד שהבנתי מה רוצים שהתוכנית תעשה) ואוסיף תמונה בה רואים את המשפט ואת המטריצה שאמורה להתקבל ולהיות מודפסת, כאשר כל שורה מייצגת מילה במישפט וכל עמודה מייצגת אות לפי סדר האלפאבית, לדוגמא העמודה הראשונה מייצגת את האות A העמודה השניייה את B וכן הלאה ובטבלה בסה"כ מסומנים מיקומי האותיות בכל מילה לדוגמה במילה השניה "DID" אז בשורה השניה מופיע בעמודה הרביעית (האות D) המספר 13 כלומר במילה האות הזו מופיעה במקום הראשון והשלישי ובעמודה של האות I מופיע הסיפרה 2 כי במילה היא ממוקמת במקום השני, וכן הלאה לגבי כל מילה במשפט.

מקווה שהייתי דיי ברור, הניסוח של התרגיל דיי קשה להבנה.

[attachment deleted by admin]

פורסם

עכשיו זה קצת יותר ברור.

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

פורסם
  • מחבר

יש בעיה שאסור לי להשתמש בפונקציה הזו

strtok.

יש אולי רעיון אחר שדומה לה?

פורסם

אין שום בעיה לממש גרסה של strtok בעצמך (זה בערך 3 שורות).

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים