פורסם 2006 ביוני 2819 שנים במחלקת הרנטגן של בי"ח ישנם שלושה חדרי צילום.התור מתנהל עפ"י סדר ההגעה של החולים אך יש סדר עדיפויות לסוג ההניה שמביא עמו החולה. בניתי מחלקה המייצגת את החולה (שם, ת"ז, הפניה, סוג צילום=אורך הזמן שאורך הצילום בין 1 ל-5 דקות)יש לי מחלקה לייצוג ערימה מסוג חולה.הבעיה שלי היא בלהגדיר אופרטורים של גדול וקטן, משום שהשורש בערימה מכיל את האיבר הגדול ביות לפי סוג ההפניה שהביא עמו החולה, החולה בסעיף 'הפניה' שממלא בכניסתו לתור- מכניס מחרוזת, איך אני הופכת אותה למספר int??לדוגמא: הפניה מטיפול נמרץ בעדיפות גבוהה ביותר, אח:כ הפניה מחדר מיון, ולבסוף הפניה מרופא חיצוני.(התור מסתדר לפי סדר ההפניות- איך עושים את זה?)עוד שאלה: פרטי החולה הם בהרשאה פרטית. ועל כן כיצג מגדירים את אופרטורים >> וגם <<.תודה.
פורסם 2006 ביוני 2919 שנים לגבי השאלה הראשונה:לא הבנתי, החולה מכניס מחרוזת שכתוב בה "1", "2" או "3"? או שהמחרוזת שהוא מכניס היא "גבוהה ביותר", "חדר מיון" או "רופא חיצוני"?במקרה הראשון, את צריכה פונקציה שממירה ממחרוזת למספר, כלומר הפונקציה atoi.במקרה השני את פשוט צריכה להשתמש ב-if, ולבדוק לאיזה מהמחרוזות של המחרוזת שנתן החולה.ולגבי תור שמסודר לפי סדר ההפניות - השיטה הכי יעילה היא להחזיק 3 תורים נפרדים, אחד עבור כל סוג הפניה. כשאת ניגשת להוציא משהו מהתור, את קודם כל ניגשת לתור הכי חשוב, אם הוא ריק אז לתור הבא, וכן הלאה.לגבי השאלה השנייה שלך, פה כבר ענו לך:http://hwzone.co.il/community/index.php?topic=188663.msg1639666#msg1639666(כשעל מנת להגדיר את אופרטור הקריאה, את צריכה להשתמש ב-istream במקום ostream)
פורסם 2006 ביוני 2919 שנים מחבר <p><p><p><p><p><p><p><p><p><p><p><p><p><p>החולה מכניס את המחרוזת "רופא חיצוני" או "טיפול נמרץ".</p><p>איך אני ממירה למספר באמצעות if?? איך אני יכולה לרשום אם הפניה=טיפול נמרץ return 1; וכו'??</p></p></p></p></p></p></p></p></p></p></p></p></p></p>
פורסם 2006 ביוני 2919 שנים את צריכה להשתמש ב-strcmp על מנת להשוות את המחרוזת שהכניס החולה והמחרוזת "טיפול נמרץ".כלומר משהו בסגנון:if (strcmp(hafnaya, "tipul nimratz") == 0)
פורסם 2006 ביוני 2919 שנים מחבר ניסיתי להגדיר את האופרטור > כמו בקישור שהראת לי, אבל זה לא עובד!זה מה שעשיתי:bool Chole::operator <(Chole &c){ if(strcmp(hafnaia,c.getHafnaia())<0) { return true; } else return false;}זה מה שהקומפיילר כותב:d:\TAR 11\Chole.h(127): error C2664: 'strcmp' : cannot convert parameter 2 from 'int' to 'const char *'
פורסם 2006 ביוני 2919 שנים מחבר מחזירה אוביקט מטיפוס intזו הפונקציה getHafnaia: int Chole::getHafnaia(){ if((strcmp(hafnaia,"tipul nimratz"))==0) { return 1; } if((strcmp(hafnaia,"miyun"))==0) { return 2; } if((strcmp(hafnaia,"machlaka"))==0) { return 3; } if((strcmp(hafnaia,"doktor"))==0) { return 4; }}
פורסם 2006 ביוני 2919 שנים strcmp זו פונקציה שמשווה בין שתי מחרוזות, על פי סדר מילוני (כלומר מחרוזת קטנה ממחרוזת אחרת אם היא מופיעה לפניה במילון).את פשוט צריכה להשוות בין ה-getHafnaia של שני האובייקטים, כלומר:if (getHafnaia() < c.getHafnaia())
פורסם 2006 ביוני 2919 שנים או פשוט:bool Chole::operator <(Chole &c){ return (strcmp(hafnaia,c.hafnaia)<0);}
פורסם 2006 ביוני 3019 שנים החולה מכניס את המחרוזת "רופא חיצוני" או "טיפול נמרץ".איך אני ממירה למספר באמצעות if?? איך אני יכולה לרשום אם הפניה=טיפול נמרץ return 1; וכו'??תשתמשי ב- enum כך לא תצטרכי לעשות if - ים ולהמיר מחרוזות לקודים
פורסם 2006 ביוני 3019 שנים נכון, מומלץ להשתמש ב-enum, אבל היא לא יכולה לקרוא אותם מהמשתמש.בסופו של דבר היא תצטרך להשתמש גם במחרוזות.
פורסם 2006 ביולי 319 שנים מחבר יש לי בעיה בהרצת התכנית.ע"מ להכניס אנשים לחדרי צילום- הם נכנסים לפי עדיפות בסדר ההפניה(טיפול-נמרץ> חדר מיון> מחלקה אחרת> רופא), ואח"כ לפי מספר הגעתם לתור.איך אני מסדרת את כניסתם לתור (כל חולה שמגיע מקבל מספר לפי מונה, איך אני בודקת)?????זה מה שעשיתי: Heap<Chole> h; Chole chole; Chole room[3]; int daka=0, choice=1, tzilum, id; char name[8],hafnaia[20]; int num=1;//àúçåì îñôøé äàðùéí áúåø room[0].setTzilum(0);//øé÷åï çãøé äöéìåí îàðùéí room[1].setTzilum(0); room[2].setTzilum(0); while(daka<3) { cout<<"\n\n\nTime is: 00:0"<<daka;//òãëåï æîï while(choice!=0) {//÷ìéèú ôøèé äçåìéí cout<<"\nIf you want to enter cholim to the tor- enter 1, else enter 0.\nEnter your choice: "; cin>>choice; if(choice==0) { break; } chole.setNum(num); cout<<"\nchole number "<<chole.getNum()<<" please enter your pratim and wait.\n\n\tName: "; cin>>name; chole.setName(name); cout<<"\tID number: "; cin>>id; chole.setID(id); cout<<"\tPlace who get you the hafnaia: "; cin>>hafnaia; while(((strcmp(hafnaia,"tipul-nimratz")))&&((strcmp(hafnaia,"miyun")))&&((strcmp(hafnaia,"machlaka")))&&((strcmp(hafnaia,"doktor"))))//ú÷éðåú ÷ìè î÷åø äôðéä { cout<<"\tEnter second place who get you the hafnaia: "; cin>>hafnaia; } chole.setHafnaia(hafnaia); cout<<"\tWhich tzilum you need: "; cin>>tzilum; while((tzilum<1)||(tzilum>5))//ú÷éðåú ÷ìè- èååç öéìåí äéðå áéï ã÷ä ìçîù ã÷åú { cout<<"Which tzilum you need: "; cin>>tzilum; } chole.setTzilum(tzilum); h.insert(chole); num++; } for(int i=0; i<3; i++)//äëðñú çåìéí ìçãø öéìåí ôðåé { if((room[i].getTzilum()<1)&&(!h.isEmpty())) { // if(room[i].getNum()> room[i]=h.GetTop(); cout<<"\nChole is called: "<<room[i].getName()<<", please enter to room number "<<i+1; h.RemoveTop(); room[i].setTzilum(room[i].getTzilum()-1); } else//àí äçãø úôåñ áçåìéí if(room[i].getTzilum()>0) { cout<<"\nIn room "<<i+1<<" kayam chole"<<" who called: "<<room[i].getName(); room[i].setTzilum(room[i].getTzilum()-1); } else { cout<<"\nNo chole in Tzilum-room "<<i+1; } } choice=1; daka++; } עוד לא התייחסתי לאחרי 3 דקות כשלא מכניסים אנשים לתור עד שכל האנשים נכנסים לחדרי צילום.זוהי המחלקה להגדרת חולה:#include <iostream>#include <string.h>using namespace std;class Chole//àåáéé÷è îñåâ çåìä{private: char name[8]; long ID; char hafnaia[18]; int tzilum; int num;public: void setName(char*); void setID(long); void setHafnaia(char*); void setTzilum(int); void setNum(int); char* getName(); long getID(); int getHafnaia(); int getTzilum(); int getNum(); //àåôøèåøéí friend ostream& operator<<(ostream&, const Chole&); //friend istream& operator>>(istream& is, const Chole&); int operator!=(Chole); int operator==(Chole); bool operator>(Chole&); bool operator<(Chole&); void operator=(Chole);};void Chole::setName(char* Name){ strcpy(name,Name);}void Chole::setID(long id){ ID=id;}void Chole::setHafnaia(char* Hafnaia){ strcpy(hafnaia,Hafnaia);}void Chole::setTzilum(int Tzilum){ tzilum=Tzilum;}void Chole::setNum(int Num){ num=Num;}char* Chole::getName(){ return name;}long Chole::getID(){ return ID;}int Chole::getHafnaia(){ if((strcmp(hafnaia,"tipul-nimratz"))==0)//äôðéä áòìú çùéáåú âáåää áéåúø { return 4; } if((strcmp(hafnaia,"miyun"))==0) { return 3; } if((strcmp(hafnaia,"machlaka"))==0) { return 2; } if((strcmp(hafnaia,"doktor"))==0)//äôðéä áòìú çùéáåú ðîåëä áéåúø { return 1; } return 0;}int Chole::getTzilum(){ return tzilum;}int Chole::getNum(){ return num;}ostream& operator<<(ostream& os, Chole &c){ os<<c.getName()<<" "<<c.getID()<<" "<<c.getHafnaia()<<" "<<c.getTzilum()<<endl; return os;}istream& operator>>(istream& is, const Chole& c){ //is>>c.name;>>c.ID>>c.Hafnaia>>c.Tzilum; return is;}int Chole::operator !=(Chole c){ if(name!=c.getName()) { return true; } else return false;}int Chole::operator ==(Chole c){ if(name==c.getName()) { return true; } else return false;}bool Chole::operator >(Chole &c) { if(getHafnaia()>c.getHafnaia()) { return true; } if(num<c.getNum()) { return true; } else { return false; }}bool Chole::operator <(Chole &c){ if(getHafnaia()<c.getHafnaia()) { return true; } else if(num>c.getNum()) { return true; } else { return false; }}
פורסם 2006 ביולי 319 שנים את יכולה לבצע INSERTION SORT עם תנאי של => במקום > על העדיפויות. ככה את גם תשמרי על הסדר שהם הגיעו בו. הראשון שהגיע(עבור אותה עדיפות) יהייה הכי קרוב לתחילת התור, והאחרון שהגיע עם אותה עדיפות יהייה הכי רחוק מתחילת התור. תנסי לצייר מצב שבו יש לך כמה חולים בתור(בהנחה שהם כבר ממויינים) ותוסיפי חולה אחד. כמו שלב האינדוקציה.
פורסם 2006 ביולי 319 שנים מחבר בעקרון, תכונת הערימה- מסדרת את האנשים בתור לפי העדיפות.איך אני מסדרת את האנשים לפי סדר הגעתם???במידה והחדר ריק מאנשים- ויש לי עוד חולים בתור, איעך אני מכניסה את החולה המתאים??
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.