פורסם 2012 באוגוסט 1113 שנים המחלקה: class rect { int x,y;public:rect(int a,int b);int area();int perimeter();void print();void show();};rect :: rect(int a,int b){ if(a>0 && a<80) x=a; else { cout<<"error inputting number a\n"; exit(1); } if(b>0 && b<25) y=b; else { cout<<"eroor inputting number b\n"; exit(1); }}void rect :: show() { int showingArea,showingPerim; cout<<x<<'\n'; cout<<y<<'\n'; showingArea= area(); cout<<"The area of X and Y is "<<showingArea<<'\n'; showingPerim= perimeter(); cout<<"The perimeter of X and Y is "<<showingPerim<<'\n'; print(); }int rect :: area() { int z; z=x*y; return(z); }int rect :: perimeter() { int z; z=2*(x+y); return(z); }void rect :: print() { int z,p; for(z=0;z<x;z++) { for(p=0;p<y;p++) cout<<"*"; cout<<'\n'; } } תוכנית MAIN: int main(){ int a,b; cin>>a>>b; rect rct1(a,b); rct1.show(); cin.get();} התוכנית מקבלת שתי משתנים וניסגרת אולי זאת קריסה לא יודע אני יודע שהיא לא עובדת
פורסם 2012 באוגוסט 1113 שנים בוא נתחיל מזה שלא כותבים למשתמש מתוך rect, לא זורקים exception ולא יוצאים באמצע CTOR / DTOR.תוריד את השורות האלה.חוצמזה תעשה DEBUG שורה שורה ותראה על מה אתה עף.
פורסם 2012 באוגוסט 1113 שנים מחבר בוא נתחיל מזה שלא כותבים למשתמש מתוך rect, לא זורקים exception ולא יוצאים באמצע CTOR / DTOR. תוריד את השורות האלה. חוצמזה תעשה DEBUG שורה שורה ותראה על מה אתה עף. מה הכוונהלא כותבים למשתמש מתוך RECT? ואתה מדבר על השורות של הEXIT שמחזיר ערך של 1? (כשהתכוונת לCTOR DCTOR כי אין לי מושג על מה אתה מדבר )
פורסם 2012 באוגוסט 1113 שנים אתה בטוח בכלל שאתה עף?יכול להיות שהתכנית פשוט מסתיימת ויוצאת.אגב, למיטב ידיעתי אין שום בעיה לזרוק חריגה מתוך בנאי.
פורסם 2012 באוגוסט 1113 שנים מחבר אתה בטוח בכלל שאתה עף?יכול להיות שהתכנית פשוט מסתיימת ויוצאת.אגב, למיטב ידיעתי אין שום בעיה לזרוק חריגה מתוך בנאי.היא פשוט מסתיימת ניראליאני מקליד מספרים שעומדת בתנאים של הIFופשוט יוצאת 0=עריכה:אם במקום A,B אני מציב מספרים היא עובדת כמו שצריך(מוריד את כל החלק של המשתנים ושם בסוגריים מספרים).
פורסם 2012 באוגוסט 1113 שנים אין צורך לצטט את ההודעה האחרונה כל פעם, אתה יכול פשוט ללחוץ על תגובה.קודם כל, אם התכנית הייתה קורסת, אז בהנחה שאתה מריץ אותה בדיבאג, היית יודע מזה (כלומר, התכנית לא הייתה פשוט מסתיימת, אלא היה קופץ לך חלון שאומר שיש שגיאה כלשהי).בכל מקרה, הבעיה שיש לך נובעת מה-buffering שיש ל-cin. אתה מוזמן לקרוא עוד ב-FAQ.
פורסם 2012 באוגוסט 1113 שנים מחבר לא הבנתי מה אני אמור לעשות עם הדבר הזהזה פשוט תקע לי את התוכנית והיא התחילה לקרוסזה שאל אן להמשיך או לשבור(להפסיק)(continue or break)
פורסם 2012 באוגוסט 1113 שנים אגב, למיטב ידיעתי אין שום בעיה לזרוק חריגה מתוך בנאי.יש.אתה משאיר את האובייקט במצב לא יציב בזיכרון. הוא לא נמחק, והוא לא ניתן לשימוש בשאר הקוד.כנ"ל - אסור לזרוק מתוך DTOR, כי כשאתה זורק exception איפשהו בקוד, כל האובייקטים שהיו על ה STACK בסקופ המקומי נמחקים - קרי - נקראים ה DTORים שלהם.אם זורקים exception בתוך מהלך זריקת exception- טוב זה לא ייגמר. סמוך עלי, או שאתה מוזמן לכתוב קוד של כמה שורות ולראות מה קורה.אלה הרגלים רעים.לכן אם אתה צריך לעשות משהו שעשוי להיכשל - לא כותבים אותו בבנאי אלא בפונקציית INIT נפרדת.
פורסם 2012 באוגוסט 1113 שנים לא הבנתי מה אני אמור לעשות עם הדבר הזהזה פשוט תקע לי את התוכנית והיא התחילה לקרוסזה שאל אן להמשיך או לשבור(להפסיק)(continue or break)האם אתה יודע להשתמש בDEBUGGER ?
פורסם 2012 באוגוסט 1113 שנים מחבר אני צריך להשאיר את הקוד כמו שהוא עכשיו?או לשנות דבריםיש לי MICROSOFT VISUAL C++ 2010 זה עושה אוטומטית DEBUG אחרת לא היה מפעיל ביכלל את התוכנית אם הייתה שגיאהזה אומר לי אחרי שאני מכניס נתון:Run-Time Check Failure #3 - The variable 'b' is being used without being initialized.
פורסם 2012 באוגוסט 1113 שנים יש.אתה משאיר את האובייקט במצב לא יציב בזיכרון. הוא לא נמחק, והוא לא ניתן לשימוש בשאר הקוד.כנ"ל - אסור לזרוק מתוך DTOR, כי כשאתה זורק exception איפשהו בקוד, כל האובייקטים שהיו על ה STACK בסקופ המקומי נמחקים - קרי - נקראים ה DTORים שלהם.אם זורקים exception בתוך מהלך זריקת exception- טוב זה לא ייגמר. סמוך עלי, או שאתה מוזמן לכתוב קוד של כמה שורות ולראות מה קורה.אלה הרגלים רעים.לכן אם אתה צריך לעשות משהו שעשוי להיכשל - לא כותבים אותו בבנאי אלא בפונקציית INIT נפרדת.אתה צודק לגבי dtor, אבל ממש לא לגבי ctor. בבירור האובייקט הוא לא יהיה בשימוש בשאר הקוד, אבל אין דבר כזה "שאר הקוד" - הרי עפה לך הרגע חריגה! כל הקוד שבא אחרי יצירת האובייקט, באותו ה-scope, לא יתבצע גם ככה. כיוון שהאובייקט רק קיים ב-scope הזה, גם ככה לא תהיה גישה אליו.הבעיה היחידה כאן היא במקרה שיש למחלקה שלך איברים שהם אובייקטים שהבנאי שלהם עשוי להיכשל, ואתה רוצה למנוע את זה. אבל גם לזה יש פתרונות. וכמובן במקרה שבו הבנאי הקצה זכרון כלשהו שלא ישוחרר (זה כמובן באחריות הבנאי לשחרר את הזכרון אם הוא רוצה להעיף חריגה).זה אומר לי אחרי שאני מכניס נתון:Run-Time Check Failure #3 - The variable 'b' is being used without being initialized.קראת את הודעת השגיאה וניסית להבין מה היא אומרת? היא אומרת לך בדיוק מה הבעיה.
פורסם 2012 באוגוסט 1113 שנים מחבר לא משנה הצלחתי לסדר אבל עכשיו אני אמור ללחוץ הרבה פעמים אנטר כיד לצאת 0= יש סידור לזה ? תודה רבה רבה לשניכם עריכה : לא משנה פתרתי גם את זה תודה רבה (חוץ מי זה שלא הבנתי על מה דיברתם על DTOR וכל השאר הבנתי הכל) תודה רבה
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.