לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #2  
ישן 28-10-2013, 00:12
צלמית המשתמש של פסטן
  פסטן פסטן אינו מחובר  
 
חבר מתאריך: 14.12.09
הודעות: 9,751
בתגובה להודעה מספר 1 שנכתבה על ידי ycsycs שמתחילה ב "תנאי בלולאת FOR"

אתה מתעסק פעמיים ב-i באותו משפט. זה אסור. התוצאה של זה לא מוגדרת - כל דבר יכול לקרות.
(אין לי כח להסביר בדיוק את הפרטים הטכניים. חפש בגוגל sequence point.)

מעבר לזה, אפילו אם הקוד היה חוקי הוא לא היה הגיוני, כי אתה מגדיל את i פעמיים בכל איטרציה, וזה לא מה שכתבת שאתה רוצה. הדבר הנכון לכתוב הוא for (size_t i = 0; num[i] < num[i+1]; ++i)‎.

כשאתה כותב num[i] < num[++i]‎ זה big no-no. כאמור, חפש sequence point להסבר מפורט. אתה יכול לראות בערך מה קורה אם תוסיף שורה בסגנון מחוץ לאחת הלולאות, סתם כך:
i=0; cout << endl << num[i] << " " << num[++i] << endl;

לי הודפס במקרה הזה הפלט הבא:
Enter 10 netural numbers between 1 to 1000:
1 2 3 4 5 6 7 8 9 10
2 2
End


GCC מתריע על זה ואומר:
prog.cpp:20:28: warning: operation on ‘i’ may be undefined [-Wsequence-point]
for(i=0 ; num[i] < num[++i] ;++i){
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה(קרדיט למרשי)
אמר לה ינאי מלכא לדביתיה אל תתיראי מן הפרושין ולא ממי שאינן פרושין אלא מן הצבועין שדומין לפרושין שמעשיהן כמעשה זמרי ומבקשין שכר כפנחס

אמר פסטן: שניהם גרועים, אבל עדיף להיות טיפש מאשר שקרן.
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 30-10-2013, 18:10
צלמית המשתמש של פסטן
  פסטן פסטן אינו מחובר  
 
חבר מתאריך: 14.12.09
הודעות: 9,751
בתגובה להודעה מספר 6 שנכתבה על ידי ycsycs שמתחילה ב "לא הבנתי את כוונתך, תסביר את..."

ציטוט:
במקור נכתב על ידי ycsycs
תודה על התגובות המחכימות.

הבעיה הייתה באמת שהתעסקתי עם ה i פעמיים, ועשיתי פעולה של הצבה פעמיים.

הפתרון לזה היה לעשות בתנאי i+1 במקום i++:

קוד:
for(i=0 ; num[i] < num[i+1] ; i++){ } if(i==9) cout << " sorted list "; else cout << " not sorted list ";
בהינתן שהמספרים בזיכרון ממויינים, הלולאה הזאת ממשיכה עד אינסוף (או עד שהתוכנה קורסת...).
התנאי צריך להיות ‎(i < ARR_SIZE) && (num[i] < num[i+1])‎.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה(קרדיט למרשי)
אמר לה ינאי מלכא לדביתיה אל תתיראי מן הפרושין ולא ממי שאינן פרושין אלא מן הצבועין שדומין לפרושין שמעשיהן כמעשה זמרי ומבקשין שכר כפנחס

אמר פסטן: שניהם גרועים, אבל עדיף להיות טיפש מאשר שקרן.
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 23:53

הדף נוצר ב 0.06 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר