נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: עזרה ב C, כתיבת פותר סודוקו

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
kide devil
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 04 June 2006 בשעה 01:23 | IP רשוּם
ציטוט kide devil

שלום אנשים.
אני צריך עזרה קטנה, לא מזמן נסיתי לכתוב פותר סודוקו, ז"א שהמשתמש יכניס רת מיקום המספרים שקיימים אצלו ולאחר מכן המחשב-האלגוריתם ימצא את המספרים החסרים-חשבתי על עיקרון של BF, ז"א כמה מצביעים שיעלו כל פעם במספר אחד בעזרת לולאה.
עכשיו נתקלתי בכמה בעיות, מישהו יוכל לעזור לי?
הבעיות:
*לגרום שהאלגוריתם (לולאות) לא יגעו במספרים שהמשתמש הכניס,לא ישנו את הערך שלהם.
נכון אפשר עם כמה פעולות IF, אבל יש כמה בעיות, אתה לא יודע כמה ערכים המשתמש מכניס.

*בזמן הבדיקה צריך כ-9 לולאות, עכשיו עזבו שזה כאב ראש כל המשתנים, זה לא יעיל,וכמעט בלתי אפשרי. המשתנה האחרון במערך הדו מימדי אמור לעלות ראשון ב - 1
עכשיו נתקלתי כאן בכמה בעיות.

* זה אפשרות, לא חובה אבל דיי יעזור.
הרי בסודוקו אין אפשרות שיהיה באותה שורה\עמודה\ריבוע את אותו המספר, לכן אם יש אפשרות כזאת אפשר לפסול את כל הלולאה,זה יקצר את הקוד מאוד, אבל איך ב-C אני סוגר את הלולאה הראשונה?

תודה.
חזרה לתחילת העמוד הצג את כרטיס החבר של kide devil חפש הודעות אחרות של kide devil בקר בדף הבית של kide devil
 
אור_ג
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 28 May 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 32
נשלח בתאריך: 04 June 2006 בשעה 11:15 | IP רשוּם
ציטוט אור_ג

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

שמע, תתייחס לכל חלק בסודוקו בצורה נפרדת, שורה היא שורה, ריבוע הוא ריבוע וטור הוא טור, ולכל איבר בסודוקו תעשה פונקציה - פונקציה לשורה, פונקציה לטור ופונקציה לריבוע.

וכדי לצאת מלולאה, תשתמש ב break
חזרה לתחילת העמוד הצג את כרטיס החבר של אור_ג חפש הודעות אחרות של אור_ג
 
devil kide
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 05 June 2006 בשעה 22:56 | IP רשוּם
ציטוט devil kide

את הפקודה break אני מכיר, אבל איך אני סוגר את הלולאה הראשונה(לולאות מקוננות).

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

חזרה לתחילת העמוד הצג את כרטיס החבר של devil kide חפש הודעות אחרות של devil kide בקר בדף הבית של devil kide
 
אור_ג
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 28 May 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 32
נשלח בתאריך: 06 June 2006 בשעה 12:33 | IP רשוּם
ציטוט אור_ג

אוקיי.
פוינטר קבוע - פוינטר שהערך שלו יכול להשתנות אבל הכתובת לא משתנה (הוא תמיד מצביע על אותו המקום). לאחר שאתה מקבל ערך מסוים, תקבע עליו פוינטר קבוע:
cin >> A
int * const pointer = &A


אתה יכול לשנות את הערך, אבל אתר לא יכול לגרום לפוינטר להפסיק להצביע על אותו המקום. או שאתה יכול גם
cin >> A
const int * pointer = &A

ואז אי אפשר לשנות את הערך של A (נראה לי שזה מה שאתה צריך)

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

איזה סוג הלולאות?
אם הbreak לא עובד, פשוט תנסה לשנות את התנאי של הלולאה. נגיד:
while (!A)
{
cin >>stuff
if (stuff >6)
a=1
{

חזרה לתחילת העמוד הצג את כרטיס החבר של אור_ג חפש הודעות אחרות של אור_ג
 
devil
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 09 June 2006 בשעה 12:16 | IP רשוּם
ציטוט devil

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

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 09 June 2006 בשעה 19:57 | IP רשוּם
ציטוט Fate

אלגוריתם פתירת סודוקו לא אמור להיות Brute Force...
אתה אמור לעשות חישובים ולא לנסות את כל האפשרויות הקיימות...
:-/
חזרה לתחילת העמוד הצג את כרטיס החבר של Fate חפש הודעות אחרות של Fate
 
Nameless
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 09 June 2006 בשעה 23:31 | IP רשוּם
ציטוט Nameless

אם אתם צריכים דוגמאות

http://www.sudokusolver.co.uk/

http://www.sudokusolver.co.uk/step.html
חזרה לתחילת העמוד הצג את כרטיס החבר של Nameless חפש הודעות אחרות של Nameless בקר בדף הבית של Nameless
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה