אורח אורח
הצטרף / הצטרפה: 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) ?! איך אני מטפל בזה ?
|