עבור לתוכן

בעיה בתוכנית - שפת C

Featured Replies

פורסם

שנה שעברה לקראת סוף השנה המורה אמר שנבנה איזה תכנית נחמדה מה שבא לנו אז החלטתי לבנות איקס איגול,

המשחק בנוי בצורה שכל אחת מ-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);
}

}

תודה לכל מי שעוזר.

פורסם

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

לדוגמא: (בהנחה שהמערך מכיל משתנים מסוג char)

כשאתה מאתחל את המערך תרץ גם פונקציה שתכניס את הערך E לכל תא.

תבנה גם פונקציה בוליאנית שתקבל מיקום במערך ואת המערך, ותחזיר אמת אם בתא המסויים הזה יש E, ושקר אם בתא הזה יש תו אחר (X/O).

כשאתה מבקש משחקן כלשהו להכניס את מספר התא שבו הוא רוצה לרשום את הסימן שלו, אז תעשה משפט תנאי שיריץ את הפוקנציה שאמרתי לך לבנות, ובמצב של "אמת" הוא ישנה את התא במערך שיכיל את הX/O (תלוי איזה שחקן משחק עכשיו), ואם יהיה "שקר" אזי תבקש מהשחקן להקליד מספר תא אחר.

כמובן שכל הקליטה צריכה להיות בתוך לולאת while...

אבל בגלל שבאמת אין לי כוח לכתוב לך אלגוריתם מילולי לכל התוכנה שלך, אז אני פשוט... לא אכתוב.

פורסם

2 בעיות:

void input_check(int m[N],int num)

תוריד את הN מהמערך.

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

פורסם
  • מחבר

תודה על העזרה,השתמשתי בפוינטר וזה הסתדר...

ארכיון

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

דיונים חדשים