פורסם 2012 במאי 2013 שנים אני מציע לך שתעשה חזרה על אופרטורים ותבין מה ההבדל בין אופרטור & ואופרטור =&.ולגבי זה:אני כרגע לא משתמש בה רק בגלל נוחות..ברגע שאני אדע שהיא פועלת אני אעשה את זה עם הפונקציה. זה אומר שאתה לא עובד בצורה נכונה.כשמתכנתים, אחד מהדברים החשובים הוא אבסטרקציה (הפשטה). הרעיון הוא לפרק את התכנית שלך למרכיבים בסיסיים ואז לממש כל אחד מהם בנפרד. לדוגמה, במקרה שלך, כתוב את הפונקציות setbit, clearbit ו-getbit ותוודא שהן עובדות, בנפרד משאר התוכנית. כתוב אותן, ואז כתוב main פשוט שבודק את הנכונות שלהן. מה זה אומר פשוט? שהכל יהיה hard coded, דהיינו בלי שום קלט מהמשתמש - פשוט צור קבוצה ותכניס לתוכה איברים באמצעות הפונקציות הנ"ל, ואז תוודא שהן עובדות נכון (כלומר, אם אתה מכניס לדוגמה את המספר 5 לקבוצה, אז לאחר מכן getbit תחזיר שהאיבר 5 נמצא בקבוצה).חשוב מאוד שה-main שלך לא ייגש למערך ישירות - תדאג שהוא ישתמש אך ורק בפונקציות שהגדרת.אחרי שכבר יש לך את זה ואתה יודע שהפונקציות עובדות כהלכה, תוסיף את הפונקציה שמדפיסה את האיברים בקבוצה. גם אותה תבדוק ע"י main פשוט שרק יוסיף איברים כלשהם (קבועים בקוד) לקבוצה, ותדפיס אותה. חוץ מזה, תדאג שהפונקציה הזו תשתמש בפונקציות שהגדרת קודם - אין שום סיבה שהיא תיגש ישירות למערך.אחרי שאתה יודע שכל הפונקציות עובדות כהלכה, רק אז תמשיך לכתוב את התכנית הראשית.
פורסם 2012 במאי 2013 שנים מחבר אתה צודק לגבי סדר העבודה אני פשוט עושה כל כך הרבה נסיונות שאני מתעצל כל פעם לשנות במקומות אחרים.בכל אופן פיצלתי וגם כתבתי פונקציה שבודקת ומדפיסה.אבל עדיין יש לי בעיה עם ה strlok המשתמש מכניס משפט כזה למשל:print_set a והפונקציה שאני שם בשביל לקרוא את ה a בתוך הפונקציה print_set היא:strtok(NULL," "); זה מוצא לי את a אבל עדיין לא מחזיר לי 0. אתה יודע למה?
פורסם 2012 במאי 2013 שנים מחבר שניהם אותו דבר. "a" ו "a" עם מספר 97 בצד.אני לא מצליח להבין למה זה קורה... זה מחזיר לי 1 ולא 0 כאשר אני משווה בניהם עם strcmp
פורסם 2012 במאי 2013 שנים מה זאת אומרת?"a" ו "a" עם מספר 97 בצד.האם שניהם מחרוזת שמכילה רק תו אחד 'a'?ותעלה את הקוד המלא, שיהיה יותר ברור.
פורסם 2012 במאי 2013 שנים מחבר void print_set(){ int i=0; char *t,*c; c=sets[i].name; t=strtok(NULL," "); while(strcmp(t,c)!=0&&i<=12){ i++; c=sets[i].name; } if(strcmp(t,c)!=0){ printf("No such group"); return; }else{ checkbit(sets[i].s); }}
פורסם 2012 במאי 2013 שנים א. זה לא הקוד המלא (מי קורא ל-print_set? איזה קריאות ל-strtok מתבצעות לפני כן?)ב. איזה קלט אתה מזין לתכנית?
פורסם 2012 במאי 2013 שנים מחבר ב main :char g[100]; fgets(g,100,stdin); char *s=strtok(g," "); func(s); והפונקציה func משווה את הקלט עם כל הפונקציות ובוחרת במתאים ואז מפעילה את הפונקציה שהמשתמש בחר.
פורסם 2012 במאי 2013 שנים מחבר אני משתמש ב fgets וקורא את מה שהמשתמש מכניס לתוך מחרוזת של charואני שולח לתכנית char.
פורסם 2012 במאי 2013 שנים מחבר הפונקציה קוראת עד לסימון שנותנים לה. למשל בשביל להוציא את המשפט הראשון צריך " " ואחרי זה נשארת אות אחת בלי המשךאיך אני יכול לסמן את זה?
פורסם 2012 במאי 2013 שנים צודק, טעות שלי.תקרא עוד על fgets ומה בדיוק היא עושה, וככה תבין מה בדיוק המחרוזת מכילה ולמה זה לא עובד.http://www.cplusplus.com/reference/clibrary/cstdio/fgets/
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.