![]() |
.. (לתיקייה המכילה) | |
האם מותר להשתמש ביותר מלולאה אחת בשאלה 2? | |
גם הפתרון שמשתמש ביותר מלולאה אחת יתקבל. |
נקודות לשים לב בשאלות 1 , 2 | |
שאלה 1 ------------------------------------------------ כל הקוד הרלוונטי לשאלה זו ייכתב בקובץ אחד ותהיה תוכנית ראשית אחת ובנוסף אליה תהיינה הפונקציות השונות, כפי שמפורט בשאלה. כאשר עובדים בקודבלוקס, אזי עובדים, כרגיל, עם פרויקט בוחרים שאלה ראשונה בוחרים Only Section ------------------------------------------------ הלוח ההתחלתי שמקבלים לא כולל ניצחון של שום שחקן. ------------------------------------------------ לגבי nextMove יש שם שתי פאזות. שתיהן, למעשה, עושות את אותו הדבר למעט הבדל אחד : הפאזה הראשונה מביטה רק על שורות/עמודות/אלכסונים שבהם אין שום משבצת ששייכת ליריב. לפאזה השנייה מגיעים רק אם בפאזה הראשונה לא מצאנו שום שורה/עמודה/אלכסון ששם אין משבצת של היריב. המשמעות : בפאזה השניה עוברים, למעשה, על כל השורות/עמודות/אלכסונים שבלוח. חוץ מההבדל הזה, עושים בשתי הפאזות את אותו הדבר : מחפשים שורה או עמודה או אלכסון כך שיש בו לפחות משבצת אחת פנויה וגם כרגע יש בו כבר מספר מקסימלי של משבצות ששייכות לשחקן של התור הנוכחי. החיפוש הוא : קודם כל השורות לפי בסדר, אחר כך כל העמודות לפי הסדר, אחר כך האלכסון הראשי, אחר כך האלכסון המשני. בוחרים בישות הראשונה שנמצאה על פי הסדר הזה שבה יש, כאמור, מספר מקסימלי כמוזכר וגם, כמובן, ישנה משבצת פנויה. כלומר, לשים לב, גם בפאזה השניה, אם יש כזו, מחפשים מספר מקסימלי של משבצות מסומנות של השחקן הנוכחי ולא סתם ממלאים מקום ראשון ריק כלשהו. ------------------------------------------------ שאלה 2 ------------------------- ------------------------------------------------ התוכנית הראשית צריך לקרוא מחרוזות בזו אחר זו עד שמגיעים למחרוזת "x" או "X" לשים לב : התו 'x' או 'X' יכול להופיע במחרוזות השונות בכל מקום, כולל בתו הראשון. קריאת המחרוזות מתבצעת באמצעות הפקודה scanf("%s", str) כאשר str מוגדרת להיות מערך תווים באורך שיכול להכיל עד 100 תווים ובנוסף עוד תו '\0' ------------------------------------------------ |
תשובות שניתנו לסטודנטים - שאלות 2 , 3 | |
שאלה 2 --------------------------- --------------------------------------------------- הקלט יכול להיות מחרוזת שמכילה רק קווים תחתונים. במקרה כזה, הפונקציה בסעיף א נותנת מחרוזת ריקה אשר מכילה '\0' בלבד התוכנית הראשית מציגה במקרה כזה ירידת שורה בלבד. --------------------------------------------------- לגבי התוכנית הראשית, המומלץ ביותר הוא לכתוב לולאה שבכל פעם מבצעת scanf("s", ...) מי שרוצה להשתמש דווקא ב scanf("%c", ...) ולא ב scanf("s", ...) אזי זה מותר. צריך, כמובן, לוודא שהתוכנית עובדת נכון בהתאם לדרישות השאלה. בפרט לשים לב שהקלט כולל סדרה של מחרוזות, כאשר לא מובטח שכל מחרוזות מופיעה בשורה חדשה, כלומר יתכן שהמחרוזות תופענה באותה השורה וביניהן ישנם אחד או יותר תווי רווח. שאלה 3 --------------------------- --------------------------------------------------- אסור להשתמש בחיפוש או במיון - הכוונה היא שאסור להשתמש באלגוריתמים מיוחדים של חיפוש או מיון כפי שנלמדו בכיתה. בפרט אסור קודם למיין את תווי המחרוזת ואחר כך, לאחר שכבר יש לנו מחרוזת ממוינת, להגיע ממנה למחרוזת התוצאה. לגבי חיפוש - הכוונה היא בעיקר לחיפוש בינרי. כן מותר לבצע לולאה שעוברת על איברי המחרוזת ובוחנת מה נמצא בכל איבר ואיבר. --------------------------------------------------- לגבי הגבלה של 10 משתנים : הכוונה לפונקציה שכותבים בסעיף א. בתוך הפונקציה הזו אסור להגדיר יותר מ-10 משתנים. מערך פנימי שמוגדר בפונקציה נספר בתור משתנה אחד. כמובן, אסור להגדיר באופן פיקטיבי משתנים שונים שלא אמורים להיות במערך אחד בתור איברים פיקטיביים של מערך אחד. את המערכים שמוגדרים בתוכנית הראשית לא סופרים. --------------------------------------------------- |