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

נושא: קריסה בתוכנית - קוד בC++

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 30 October 2007 בשעה 20:06 | IP רשוּם
ציטוט אורח

קוד:

#include <iostream>

using namespace std;
typedef unsigned int uint;
enum Bottle { Green=0, Blue, Trans };

class RecycleBin
{
public:
    RecycleBin(uint g, uint b, uint t): myGreen(g) , myBlue(b), myTrans(t) {}
    ~RecycleBin() {}

    void setAllBottles(int g, int b, int t)
    {
        myGreen=g;
        myBlue=b;
        myTrans=t;
    }

    void setBottle(Bottle type, int num)
    {
        if (type == Green) myGreen = num;
        else if (type == Blue) myBlue = num;
        else myTrans = num;
    }

    uint getBottle(Bottle type) const
    {
        if (type == Green) return myGreen;
        else if (type == Blue) return myBlue;
        return myTrans;
    }

private:
    uint myGreen;
    uint myBlue;
    uint myTrans;
};

int main()
{
    Bottle type=Green;
    RecycleBin first_rb(2,1,1);
    RecycleBin second_rb(1,2,1);
    RecycleBin third_rb(1,1,2);
    int binNum=0, cMoves=0, minMoves=-1;
    bool usedRb[3];
    uint max;

    Bottle bottleArr[6][3] ={    Green, Blue, Trans,
                                Green, Trans, Blue,
                                Blue, Trans, Green,
                                Blue, Green, Trans,
                                Trans, Green, Blue,
                                Trans, Blue, Green    };

    for (int i = 0; i < 6; ++i, cMoves=0)
    {
        for (int j = 0; j < 3; ++j)
            usedRb[i]=false;

        for (int j = 0; j < 3; ++j)
        {
            max=0;
            type=bottleArr[i][j];
            cout << "i: " << i << " j: " << j << endl;
            if (first_rb.getBottle(type) >= max && !usedRb[0])
            {
                max = first_rb.getBottle(type);
                binNum = 1;
            }
            
            if (second_rb.getBottle(type) >= max && !usedRb[1])
            {
                max = second_rb.getBottle(type);
                binNum = 2;
            }
            if (third_rb.getBottle(type) >= max && !usedRb[2])
            {
                max = third_rb.getBottle(type);
                binNum=3;
            }

            switch (binNum)
            {
                case 1:
                    cMoves += second_rb.getBottle(type) + third_rb.getBottle(type);
                    usedRb[0]=true;
                    break;
                case 2:
                    cMoves += first_rb.getBottle(type) + third_rb.getBottle(type);
                    usedRb[1]=true;
                    break;
                default:
                    cMoves += second_rb.getBottle(type) + first_rb.getBottle(type);
                    usedRb[2]=true;
                    break;
            }
        }
        cout << "cMoves: " << cMoves << " minMoves: " << minMoves << endl;
        if (cMoves < minMoves || minMoves == -1)
            minMoves = cMoves;
    }   

    return 0;
}


מה גורם לקוד לקרוס בדיוק שהוא מגיע לסוף ?!
עשיתי קליטה לפני ה return 0
וזה לא עשה שום בעיה..
אני לא מבין למה הקוד קורס
ראיתי בדיבאג יציאה לא נכונה:
Native' has exited with code -1073740791 (0xc0000409).
בדקתי בגוגל וכתוב שהקוד הזה קורה מתי שהבאפר מוצף (Buffer Overrun)
?!
איך אני מטפל בזה ?
חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 30 October 2007 בשעה 21:27 | IP רשוּם
ציטוט אורח

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

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

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

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