ערכתי לאחרונה בתאריך 28.03.04 בשעה 18:32 בברכה, HEART
אני אמור ליצור הגרלת לוטו אך כנראה שיש לי בעיה בהקצאות
קומפילציה עוברת אבל יש לי בעיה בהרצה.
תרגיל 2נושא התרגיל:
מערכים דינאמים של מצביעים
מיון מצביעים
Destractor
copy constructor
הקדמה:
בתרגיל זה יש לבצע סימולציה של הגרלת הלוטו.
כאשר יופיעו המחלקות הבאות:
1. משבצת – מכילה 30 מספרים (1-30).
2. טופס – מכיל מספר משתנה של משבצות, בהתאם לגורם הממלא את הטופס.
(יכול להיות שטופס שמולא יהיו בו 5 משבצות או 20 משבצות בהתאם לכמה המשתתף רוצה למלא).
ומספר הטופס.
3. הגרלה –
i. בהגרלה ישתתפו כל הטפסים שמולאו.
ii. יוגרלו 5 מספרים בין 1 ל-30 באופן רנדומלי.
iii. לאחר ההגרלה , תחילה יש למיין את המשבצות בכל טופס לפי כמות הנחושים בכל טופס .
iv. לאחר מכן יש למיין את כל הטפסים הסדר יורד מן הניחוש עם המשבצת עם הכי הרבה ניחושים עד לטופס עם המשבצת עם הכי פחות נחושים.
4. להרצת התוכנית-
i. לקבל מהמשתתף כמה טפסים יהיו בהגרלה.
ii. מספר הטופס יהיה באופן רץ – t1, t2 וכן הלאה.
iii. ולאחר מכן יש לקלוט מכל טופס את מספר המשבצות שישתתפו באותו טופס.
iv. יש להכניס בצורה רנדומאלית מספרים אשר ימלאו את המשבצות בכל טופס.
v. להציג את המיון של התוצאות בהתאם למה שהוגדר קודם.
vi. יש להציג את מספר הטופס ואת התוצאות הגבוהות ביותר בכל טופס בסדר יורד.
5. מצורף מספר מחלקות והמשתנים הבסיסים שחובה שיהיו בכל מחלקה, ניתן להוסיף משתנים הגיונים לכל מחלקה כרצונכם.
#include<iostream> #include<string.h> #include<time.h> #include <stdlib.h> #include <stdio.h> #include<cassert> using namespace std; class Square { private: int number ; public: Square() { //int tmp; for (int l=0;l<30;l++) number=0; for (int j=0;j<5;j++) { number = 1; } } ~Square (){} }; class Blank { private: Square *Psquare; char *Pnumberblank; int numberofsquareinthisblank; public: Blank() { Psquare=NULL; Pnumberblank=NULL; numberofsquareinthisblank=-1; } Blank (char *Pnum,Square *Ps , int numofs) { set_psquare(Ps); set_pnumber(Pnum); set_numberofsquareinthisblank(numofs); } Blank (Blank &b) { Psquare = b.Psquare; Pnumberblank = b.Pnumberblank; numberofsquareinthisblank = b.get_numberofsquareinthisblank(); } void set_pnumber(char *p) { Pnumberblank=p; } void set_psquare(Square *p) { Psquare = p; } void set_numberofsquareinthisblank(int numofsq) { numberofsquareinthisblank = numofsq; } //gets// Square get_psquare(){return *Psquare;} char get_pnumberblank(){return *Pnumberblank;} int get_numberofsquareinthisblank(){return numberofsquareinthisblank;} ~Blank (){delete Psquare; delete Pnumberblank;} }; class Lottery { private: Blank *Pblank; int numbersinLottery; public: Lottery () { Pblank = NULL; numbersinLottery =0; numbersinLottery =0; numbersinLottery =0; numbersinLottery =0; numbersinLottery =0; } Lottery(Blank *Pbl) { set_num(); Pblank = Pbl; } void set_num() { for (int m=0;m<5;m++) { numbersinLottery = rand()%30+1; } } void printnum() { for (int i=0;i<5;i++) { cout<<numbersinLottery<<" "; } cout<<endl; } ~Lottery(){delete Pblank;} }; char *set_pnumberblank(int num) { char number, t="t",*tmp ; _itoa(num , number , 10); tmp = strcat(number,t); return tmp; }void main(void) { Square *ps;Blank *pb;char *pnum; int nob,nos; cout<<"how many blanks?"; cin>>nob; pb = new Blank; for (int i=0;i<nob;i++) { cout<<"how many squares in t"<<(i+1)<<"?"; cin>>nos; ps= new Square; for (int j=0;j<nos;j++) { ps = Square(); } pnum = set_pnumberblank(i+1); pb = Blank (pnum,ps , nos); } Lottery l(); //.printnum(); }
|