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

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



  #4  
ישן 13-04-2007, 17:04
צלמית המשתמש של scripter
  scripter scripter אינו מחובר  
 
חבר מתאריך: 04.08.02
הודעות: 4,468
בתגובה להודעה מספר 3 שנכתבה על ידי DrTempi שמתחילה ב "זה שגיאה בקימפול או בריצה?"

זאת שגיאת הרצה.
כרגע הוא מקבל assertion error בגלל שהוא מריץ את ה-debug version.
כשהוא יריץ את ה-retail, סביר להניח הוא ייקבל seg fault (או general protection fault בווינדוס, או איך שלא קוראים לחרטא הזה )

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

זה יכול לקרות בכל מני סיבות, double deletion, out of bounds, ועוד.
שיינסה לשים copy constructor במחלקה שלו, אני מניח שהוא מוחק פעמים משהו...

זה ניחוש פרוע, כי אני לא רואה את הקוד בכל מקרה
_____________________________________
C pogrammers never die. They are just cast into void.



נערך לאחרונה ע"י scripter בתאריך 13-04-2007 בשעה 17:11.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 16-04-2007, 00:09
  rafidi rafidi אינו מחובר  
 
חבר מתאריך: 17.11.06
הודעות: 13
חברים צרפתי לכם את התוכנית
בתגובה להודעה מספר 1 שנכתבה על ידי rafidi שמתחילה ב "בעייה בהוספת destructor ב ++c"

שלום חברים תודה על התגובות , הנה התוכנית שלי
אני כבר שבועיים מנסה להבין איך לתקן את הבעייה של הASSERTION FAILED
כשאני מוריד את הDESTRUCTOR הכל תקין
אז אני מעריך שיש פה דליפת זכרון , אבל אני משתגע לא מוצא את הבעייה
לכל המומחים לC++...


קוד PHP:
 #include <iostream>
 
//#include<assert.h>
 
#include<stdlib.h>
 
using namespace std;
 
class 
verylong
 
{
 
private :
 
char *data;
 
int size;
 
public : 
 
verylong();//default constructor 
 
int length(char*); 
 
verylong(char*);//constructor 
 
verylong(const verylong&);//copy constructor 
 
~verylong();//destructor 
 
void print();//printing 
 
void print2();
 
verylong add(verylong&);
 
verylong sub(verylong&);
 
chargets(){return data;}
 
void histo();
 
void set(char*);
 
};
 
void verylong::set(char *str)
 
{
 
int i=0;
 
size=length(str);
 
data=new char[size+1];
 
//assert(data!=0);
 
for(i=0;i<size;i++) data[i]=str[i];
 
data[i]='\0';
 
}
 
void verylong::histo()
 
{
 
int j;
 
j=atoi(data);
 
int arr[10];
 
int arr2[10];
 
int i;
 
int x;
 
for(
i=0;i<10;i++) arr2[i]=0;
 
while(
j>0) {
 
x=j%10;
 
if(
j>9)
 
{
 
if(
x==0arr2[0]++; 
 
if(
x==1arr2[1]++; 
 
if(
x==2arr2[2]++;
 
if(
x==3arr2[3]++;
 
if(
x==4arr2[4]++;
 
if(
x==5arr2[5]++;
 
if(
x==6arr2[6]++;
 
if(
x==7arr2[7]++;
 
if(
x==8arr2[8]++;
 
if(
x==9arr2[9]++;
 
}
 
 
 
else {
 
if(
x==0arr2[0]++; 
 
if(
x==1arr2[1]++; 
 
if(
x==2arr2[2]++;
 
if(
x==3arr2[3]++;
 
if(
x==4arr2[4]++;
 
if(
x==5arr2[5]++;
 
if(
x==6arr2[6]++;
 
if(
x==7arr2[7]++;
 
if(
x==8arr2[8]++;
 
if(
x==9arr2[9]++;
 
break;
 
}
 
j=j/10
 
}
 
cout<<endl;
 
for(
i=0;i<10;i++) {
 
cout<<i<<" : ";
 
while(
arr2[i]>0)
 
{
 
cout<<"* ";
 
//cout<<"arr2="<<arr2[i];
 
arr2[i]--;
 
}
 
cout<<endl;
 

 
}
 
int verylong::length(char *str)// finding size of string
 
{
 
int i=0;
 
for(
i=0;str[i]!='\0';i++);
 
return 
i;
 
}
 
verylong::verylong()//default constructor
 
{
 
int i=0;
 
char str[]="123";
 
size=length(str);
 
data=new char[size+1];
 
//assert(data!=0);
 
for(i=0;str[i]!='\0';i++)
 
data[i]=str[i];
 
data[i]='\0';
 
size=atoi(data);
 
}
 
void verylong::print()//print
 
{
 
cout<<data<<endl;
 
}
 
verylong::verylong(char *str)//constructor
 
{
 
int i=0;
 
size=length(str);
 
data=new char[size+1];
 
//assert(data!=0);
 
for(i=0;str[i]!='\0';i++)
 
data[i]=str[i];
 
data[i]='\0';
 
}
 
verylong::verylong(const verylong&copy)//copy c 
 
{
 
int i;
 
size=copy.size;
 
data = new char[size+1];
 
//assert(data!=0);
 
for(i=0;copy.data[i]!='\0';i++) //copy[i] = copy.data[i] ??
 
data[i]=copy.data[i];
 
//assert(data!=0);
 
data[i]='\0';
 
//cout<<data;
 
}
 
verylong::~verylong()
 
{
 
cout<<"destructor"<<endl;
 
if(
data
 
delete []data;
 
}
 
verylong verylong::sub(verylong &str)
 
{
 
verylong temp;
 
temp.size=(atoi(data)-atoi(str.data)) ;
 
return 
temp
 
}
 
verylong verylong::add(verylong &str)
 
{
 
//cout<<str.size<<endl;//str.size - size of yy ,
 
//cout<<size<<endl;//str.size - size of xx ,
 
//cout<<str.data<<endl;//str.data -yy string
 
//cout<<data;//data-xx string 
 
verylong temp;
 
//fgets (str.data, 256, stdin );
 
temp.size=atoi(str.data)+atoi(data);
 
//printf ("The value entered is %d",temp.size);
 
return temp
 
}
 
void verylong::print2()
 
{
 
cout<<size<<endl;
 
}
 
int main()
 
{
 
char a[256];
 
char b[256];
 
verylong sample1;
 
verylong sample2("7");
 
verylong str1;
 
verylong str2;
 
verylong z;
 
char *copy1;
 
char *copy2;
 
verylong adding;
 
verylong subbing;
 
int choice;
 
choice=0;
 
while(
choice!=7)
 
{
 
cout<<endl;
 
cout<<"choose an option from 1-6"<<endl;
 
cout<<"(1) printing copy constructor "<<endl;
 
cout<<"(2) printing and adding 2 default chars "<<endl;
 
cout<<"(3) printing and subtruction 2 default numbers"<<endl;
 
cout<<"(4) getting 2 new chars and adding them"<<endl;
 
cout<<"(5) getting 2 new chars and subtructing them them"<<endl;
 
cout<<"(6) getting char and printing histogram"<<endl;
 
cout<<"(7) exit"<<endl;
 
cin>>choice;
 
cout<<endl;
 
if(
choice==1) {
 
z=verylong(sample2); //using copy c 
 
cout<<"this is sample2 : ";
 
sample2.print();
 
cout<<endl;
 
cout<<"copy constructor of sample2 is : ";
 
z.print(); //printing copy c 
 
cout<<endl;
 
}
 
if(
choice==2) {
 
cout<<"first char :";
 
sample1.print();
 
cout<<endl;
 
cout<<"second char : ";
 
sample2.print();
 
cout<<endl;
 
adding=sample1.add(sample2); 
 
cout<<"addition of 2 chars : ";
 
adding.print2();
 
}
 
if(
choice==3) {
 
cout<<"first char :";
 
sample1.print();
 
cout<<endl;
 
cout<<"second char : ";
 
sample2.print();
 
cout<<endl
 
verylong subbing;
 
subbing=sample1.sub(sample2);
 
cout<<"subtruction of 2 chars : ";
 
subbing.print2();
 

 
if(
choice==4) {
 
cout<<"please enter 2 chars"<<endl
 
cin>>a>>b;
 
cout<<"adding of 2 new chars :"<<endl<<endl;
 
str1.set(a);
 
str2.set(b);
 
adding=str1.add(str2);
 
copy1=str1.gets();
 
copy2=str2.gets();
 
cout<<copy1<<"+"<<copy2<<"=";
 
adding.print2();
 
}
 
if(
choice==5) {
 
cout<<"please enter 2 chars"<<endl
 
cin>>a>>b;
 
cout<<"subtructing 2 new chars :"<<endl<<endl;
 
str1.set(a);
 
str2.set(b);
 
subbing=str1.sub(str2);
 
copy1=str1.gets();
 
copy2=str2.gets();
 
cout<<copy1<<"-"<<copy2<<"=";
 
subbing.print2();
 
}
 
if(
choice==6) {
 
cout<<"please enter char"<<endl;
 
cin>>a;
 
str1.set(a);
 
cout<<"histogram of this char : "<<endl;
 
str1.histo();
 

 
}
 
cout<<"THANK YOU FOR USING MY PROGRAM <RAFI DIAMANT 2007>"<<endl;
 

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 16-04-2007, 12:53
  משתמש זכר yoavmatchulsky yoavmatchulsky אינו מחובר  
 
חבר מתאריך: 15.08.06
הודעות: 1,561
שלח הודעה דרך ICQ אל yoavmatchulsky שלח הודעה דרך MSN אל yoavmatchulsky Facebook profile
בתגובה להודעה מספר 10 שנכתבה על ידי rafidi שמתחילה ב "ניסתי להשתמש בDEBUGGER זה לא עזר לי"

קוד:
size = atoi(data)


למה עשית את זה?
הגודל של המחרוזת לא שווה למספר שהמחרוזת מחזיקה..

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

אולי התכוונת לעשות size=strlen(data)?

ועוד טעות לוגית: אני מניח שכתבת את זה כדי לעבוד עם מספרים גדולים יותר מ4 מיליארד (אינט)
אז איפה היגיון לבצע חיבור וחיסור שלהם עם הפיכה של המספר לאינט ואז חיבור והפיכה חזרה למחרוזת?
זה פשוט לא הגיוני
אם יש לך מספר עם 20 ספרות, התוכנית או תזרוק אותך לעזאזל או שלא תהפוך את כל המספר..
ותחשוב על זה

נערך לאחרונה ע"י yoavmatchulsky בתאריך 16-04-2007 בשעה 12:59.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

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

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

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