דף 1 מתוך 1

עבודה 5 - המרת קובץ הקוד למילים

נשלח: 12:55 25/06/2009
על ידי JonathanS
איך בדיוק אנחנו אמורים להמיר את הקובץ למילים בודדות?
מה שאני עשיתי הוא:

fileText = fileText.trim().toUpperCase();
fileText = fileText.replaceAll("[^A-Za-z]", " ");
String[] wordList = fileText.split("\\s+");

ורק אז הפעלתי את הפונקציהC על כל מילה בנפרד, הבעיה היא שמילים ארוכות מגיעות למקסימום של INT, מה אני אמור לעשות עם זה?

נשלח: 14:27 25/06/2009
על ידי TA_Ariel
מילים מאד ארוכות,
תשתמשו בחישוב בmod 3571
כלומר לאחר כל צעד בחישוב תקחו את השארית מחלוקה ב3571
בצורה הזו לעולם לא תעברו את maxint.

נשלח: 17:44 25/06/2009
על ידי JonathanS
סבבה, אבל חוץ מזה ההמרה למילים סבבה? אני לא מבין בדיוק איך תבדקו את זה, אתם צריכים לספק דרך אחידה שכולם ישתמשו באותו אלגוריתם כדי להפוך את זה למילים, אחרת זה חסר טעם?

לפצל על פי רווחים? לזרוק תווים שהם לא אותיות (להפוך לרווחים) ואחרי זה לפצל על פי רווחים? איך בדיוק אתם רוצים את זה? אני לא חושב שרוב האנשים יודעים מה זה regex בכלל

נשלח: 18:27 25/06/2009
על ידי TA_Ariel
הפיצול הוא לפי רווחים ,
האותיות שאין להם ערך הם לא מפרידות ערכם פשוט 0.

נשלח: 18:49 25/06/2009
על ידי YossiCo
היי!
לגבי שארית החלוקה ב3571:
להפעיל אותה על הפונקציה P
או על C (התוצאה הסופית של C - לאחר הרקורסיה)

נשלח: 19:08 25/06/2009
על ידי TA_Ariel
על P כי גם בחישוב עצמו המחוברים לא יכולים לעבור את maxint

נשלח: 17:54 27/06/2009
על ידי roni
יונתן אתה יכול בבקשה להסביר יותר מה רשמת למעלה ומה כל פקודה עושה????
ולמה רשמת
String[] wordList = fileText.split("\\s+");
כלומר מה ה
\\s+
מסמן?

נשלח: 18:20 28/06/2009
על ידי JonathanS
השורה שאלה התייחסת מחלקת את המחרוזת לחלקים על פי רווחים.

נשלח: 15:43 29/06/2009
על ידי כחול
TA_Ariel כתב:מילים מאד ארוכות,
תשתמשו בחישוב בmod 3571
כלומר לאחר כל צעד בחישוב תקחו את השארית מחלוקה ב3571
בצורה הזו לעולם לא תעברו את maxint.
מה מיוחד ב-3571?
למה להשתמש במודולו שלו?

נשלח: 17:20 29/06/2009
על ידי TA_Ariel
שאלה מצויינת ,
יש שלוש סיבות
1. 3571 ראשוני
2. הוא קטן משורש maxint
3. נובע מ1 : הסיכוי שלשני מספרים מודולו ראשוני יהיה אותה שארית הוא קטן.

נשלח: 22:54 29/06/2009
על ידי roni
אפשר בבקשה להסביר מה ההבדל בין:

String[] wordList = fileText.split("\\s+");
לבין
String[] wordList = fileText.split("\\s");
כלומר
"\\s"
לבין
"\\s+"
בסוגריים

נשלח: 01:22 30/06/2009
על ידי JonathanS
עקרונית זה לא בחומר של הקורס, אבל split מקבל תבנית של משהו שנקרא regex (regular rexpression):
\\s+ אומר תפצל לפי רווח אחד או יותר, כלומר אם יופיעו רווח, אחד שניים עוקבים, שלושה עוקבים וכו' הוא יתייחס לזה כרווח אחד ויפצל לפי זה. אם מורידים הפלוס הכוונה לרווח אחד בודד ולכן זה לא מתאים במקרה שלנו.

נשלח: 10:19 30/06/2009
על ידי orankap
איך אתם שומרים את כל המילים ולא רק את המילים בשורה האחרונה? לעשות ספליט לכל שורה מוחק את מה שהיה במערך הסטרינגים לפני, מצאתי את עצמי משתמש בוקטור לו אני מוסיף אחרי כל שורה את כל המילים המופרדות..
יש פתרון אחר?

נשלח: 18:17 30/06/2009
על ידי roni
תיצור מחרוזת חדשה
תוסיף אליה כל פעם שורה
ולאחר הלולאה תעשה את הספליט

נשלח: 18:58 30/06/2009
על ידי orankap
ולמה אני לא חשבתי על זה?:oops:
תודה רבה :D