לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 06-09-2007, 15:12
צלמית המשתמש של vitaly87
  משתמש זכר vitaly87 vitaly87 אינו מחובר  
 
חבר מתאריך: 10.06.06
הודעות: 452
שלח הודעה דרך ICQ אל vitaly87
צריך את עזרתכם בתוכנית בC++

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



ישנן 3 צורות להגדרת מחרוזת תווים :
.unsigned size מצביע לתחילת המחרוזת ואורכה
מצביע לתחילת המחרוזת שבסופה מופיע '0\'.
מצביע לתחילת המחרוזת ומצביע לסופה.
.בהתאם לשלוש הצורות הנ"ל , הגדר את התורשה:1

String ( char * pStart )
/ | \
/ | \
Pointer_Size Pointer_Null Pointer_Point
(unsigned size) ( char * pEnd)

Pointer_Size , Pointer_Null, Pointer_Pointנתון מספר עצמים מסוגים
(ההגדרה שלהם דינאמית ) ומערך מצביעים אליהם .
הדפס כל עצם בצורתו (חובה להשתמש .בעזרת פונקציה הרלוונטית 2
ברב- צורתיות).
Pointer_Null הצמד את כל המחרוזות למחרוזת אחת מסוג . 3
את הפעולה "הצמדה" Pointer_Null למטרה זו הגדר ב-
.Point_Null& operator += ( const String & )



קוד:
#include <iostream> #include <cassert> #include <cstdlib> using namespace std; class String { protected: char *pstart; public: String();//constractor String(char *start);//constractor virtual void print()=0;//virtual print string virtual unsigned int sizeOf()=0;//virtual length of string char *startout(){return pstart;}; virtual ~String(); }; String::String() : pstart(NULL) {} String::String(char *start) : pstart(start) {} String::~String() { delete pstart; pstart = NULL; } class Pointer_Size : public String { private: unsigned int size; public: Pointer_Size(char *p,unsigned int other);//constractor virtual ~Pointer_Size();//distractor virtual unsigned int sizeOf(){return size;};//return length of string void print();//print string }; Pointer_Size::Pointer_Size(char *p,unsigned int other) : String(p), size(other) { } void Pointer_Size::print() { for(unsigned int i=0 ;i<size;i++) cout<<pstart[i]; } Pointer_Size::~Pointer_Size() { // DO NOT DELETE pstart - double delete // remember, ~String() gets called after ~Pointer_Size() } class Pointer_Null : public String { public: Pointer_Null(char *p);//constractor void print(); virtual unsigned int sizeOf();//return length of string Pointer_Null operator+=(const string & s);//plusing one string to another ~Pointer_Null(); }; Pointer_Null::Pointer_Null(char *p) : String(p) { } unsigned int Pointer_Null::sizeOf() { unsigned int i; for(i=0;string[i]!='\';i++) return i; } Pointer_Null & Pointer_Null::operator+=(const strint & s) { int len=sizeOf()+s.sizeOf()+1; char *presult=new char[len]; char * psecound=s.startout(); if (presult!=Null) {if (pstart!=Null) strcpy(presult,pstart); else strcpy(presult,"\"); strcat(presult,psecond); cout<<endl<<"presult"<<presult<<endl; if (pstart) delete[] pstart; } return *this; } void Pointer_Null::print() { for(unsigned int i=0 ;pstart!='\';i++) cout<<pstart[i]; } Pointer_Null::~Pointer_Null() { } class Pointer_Point : public String { private: char * pEnd; public: Pointer_Point(char *p,char *other);//constractor virtual unsigned int sizeOf();//counting the size of the string until *pEnd void print(); virtual ~Pointer_Point();//distractor }; Pointer_Point::Pointer_Point(char *p,char *other) : String(p), pEnd(other) { } void Pointer_Point::print() { for(unsigned int i=0 ;&pstart!=&pEnd;i++) cout<<pstart[i]; } Pointer_Point::~Pointer_Point() { delete pEnd; pEnd = NULL; } unsigned int Pointer_Point::sizeOf() {unsigned int i; for(i=0;&this[i]!=&pEnd;i++) ; return i; } int main() { String *p[3]={new Pointer_Size("hello",5),new Pointer_Null("bye")};
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

לגלריה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 06-09-2007, 19:24
  Dark Knight Dark Knight אינו מחובר  
 
חבר מתאריך: 30.07.05
הודעות: 949
שלח הודעה דרך ICQ אל Dark Knight
בתגובה להודעה מספר 1 שנכתבה על ידי vitaly87 שמתחילה ב "צריך את עזרתכם בתוכנית בC++"

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

בכל אופן, ממעבר מאד מאד מרופרף על הקוד עליתי על 2 בעיות ועוד משהו לא מוצלח:

בעיה:

קוד:
String::String(char *start) : pstart(start) {}



הבעיה? מה קורה אם למשל מי שמשתמש במחלקה שלך בונה תוכנית כזו:

קוד:
char* strBuff; cout >> strBuff; string bla(strBuff); cout >> strBuff; string blaaa(strBuff); cout >> strBuff; string last(strBuff);


רמז: כולם יראו את הקלט האחרון, וכולם ישתנו ביחד.

פתרון: הקצאה דינאמית:

קוד:
String::String(char *start) : pstart(new char[strlen(start)+1]) { strcpy(start, pstart); }

לדוגמא...

בעיה: שימוש בפונק' ה-delete הלא נכונה:
זכור שמחרוזת היא מערך של תווים!!!
צריך להשתמש בפונק' השחרור למערכים:
delete[] pstart;

עיצוב לא מוצלח: ריבוי Destructors...
למעשה אתה זקוק רק ל-Destructor של המחלקה האב, זו שמריצה delete[]. אין צורך בלבנות אותו כ-virtual שכן הוא מתאים לכל המחלקות היורשות שלך...

זה מרפרפוף זריז..
תגדיר את הבעיה שלך במפורש, ואני אשתדל לחפש יותר לעומק...
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 00:17

הדף נוצר ב 0.03 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2026 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר