פורסם 2005 בדצמבר 2019 שנים שנה שעברה לקראת סוף השנה המורה אמר שנבנה איזה תכנית נחמדה מה שבא לנו אז החלטתי לבנות איקס איגול,המשחק בנוי בצורה שכל אחת מ-9 המשבצות ממוספרת מ-1 עד-9 והמשתמש בוחר מספר ושם מופיע איקס, לאחר מכן התור עובר לשחקן עיגול, הוא בוחר מספר וכן הלאה עד שיש שורה או אלכסון והמשחק נגמר(כמו ה-NUMPAD במקלדת)למעשה זהו מערך חד מימדי בגודל 9, ונתונים הצירופים שצריך כדי לנצח (למשל 1,4,7 או 1,2,3)הכל עובד מצויין, אבל יש בעיה בבדיקת קלט, לפני שאני מכניס איקס או עיגול למשבצת, אני רוצה לוודא שהיא ריקה ואין שם איקס או עיגול, וכאן הבעיה.m הוא המערך שאותו אני רוצה לבדוק.N defined as 9הנה שורות הקוד הרלוונטיות :void input_check(int m[N], int num);void main(){ printf("Player X \n"); scanf ("%d",&num); input_cheak(m,num);....}...void input_check(int m[N],int num){ while(num>9 || num<1 || m[num]=='x' || m[num]=='o') { printf("illegale input\n"); scanf("%d",&num); }}תודה לכל מי שעוזר.
פורסם 2005 בדצמבר 2019 שנים כשאתה מתחיל את המערך, תתן איזה ערך התחלתי שיהיה בכל תא בתוכו, ואז כאשר שחקן מנסה לסמן משהו בתא, אז תבדוק אם קיים הסימן הראשוני. אם הוא עוד קיים, סימן שניתן לסמן בריבוע הנ"ל איקס/עיגול, אם לא, אז תבקש לקלוט את המיקום מחדש.לדוגמא: (בהנחה שהמערך מכיל משתנים מסוג char)כשאתה מאתחל את המערך תרץ גם פונקציה שתכניס את הערך E לכל תא.תבנה גם פונקציה בוליאנית שתקבל מיקום במערך ואת המערך, ותחזיר אמת אם בתא המסויים הזה יש E, ושקר אם בתא הזה יש תו אחר (X/O).כשאתה מבקש משחקן כלשהו להכניס את מספר התא שבו הוא רוצה לרשום את הסימן שלו, אז תעשה משפט תנאי שיריץ את הפוקנציה שאמרתי לך לבנות, ובמצב של "אמת" הוא ישנה את התא במערך שיכיל את הX/O (תלוי איזה שחקן משחק עכשיו), ואם יהיה "שקר" אזי תבקש מהשחקן להקליד מספר תא אחר.כמובן שכל הקליטה צריכה להיות בתוך לולאת while...אבל בגלל שבאמת אין לי כוח לכתוב לך אלגוריתם מילולי לכל התוכנה שלך, אז אני פשוט... לא אכתוב.
פורסם 2005 בדצמבר 2119 שנים 2 בעיות:void input_check(int m[N],int num)תוריד את הN מהמערך.כשאתה שולח לפונ את המשתנה תשלח אותו בתור פויינטר, כדי שהשינוי יתבצע גם מחוץ לפונ(בידיוק כמו הSCANF).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.