PDA

View Full Version : error های برنامه



fshb_ 1370
یک شنبه 02 آبان 1389, 20:35 عصر
سلام
مشکل این برنامه کجاست؟ چرا از char * c=ch ارور میگیره؟ c.name=c اشتباهه؟ باید چه جوری بنویسم؟



#include<iostream>
using namespace std;
struct CandyBar
{
char name[30];
double weight;
int calory;
};
char ch[]="Millennium Munch";
void insert(CandyBar c,char* c=ch,double d=2.85,int i=350);
void display(const CandyBar c);
int main()
{
CandyBar cb;
insert(cb,"test",62,12);
display(cb);
return 0;
}
void insert(CandyBar c,char* c,double d,int i)
{
c.name=*c; //doroste? c.name=*c !!
c.weight=d;
c.calory=i;
}
void display(const CandyBar c)
{
cout<<"name:"<<c.name<<endl;
cout<<"weight:"<<c.weight<<endl;
cout<<"calory:"<<c.calory<<endl;
}

هم دانشگاهی
یک شنبه 02 آبان 1389, 22:26 عصر
دو جای کدتون اشکال داشت:
1. اول اشتباه تایپی : در خط 19 باید ch میبود که c بود.

void insert(CandyBar c,char* ch,double d,int i)

2. دوم در رابطه با سوالتان باید بگویم چون ch یک رشته است باید از دستور strcpy استفاده نمایید.

من کدتان را اصلاح کردم:

#include<iostream>
using namespace std;
struct CandyBar
{
char name[30];
double weight;
int calory;
};
char ch[]="Millennium Munch";
void insert(CandyBar c,char* c=ch,double d=2.85,int i=350);
void display(const CandyBar c);
int main()
{
CandyBar cb;
insert(cb,"test",62,12);
display(cb);
return 0;
}
void insert(CandyBar c,char* ch,double d,int i)
{
strcpy(c.name,ch); //c.name=*ch; //doroste? c.name=*c !!
c.weight=d;
c.calory=i;
}
void display(const CandyBar c)
{
cout<<"name:"<<c.name<<endl;
cout<<"weight:"<<c.weight<<endl;
cout<<"calory:"<<c.calory<<endl;
}

موفق باشید !

fshb_ 1370
یک شنبه 02 آبان 1389, 22:59 عصر
دو جای کدتون اشکال داشت:
1. اول اشتباه تایپی : در خط 19 باید ch میبود که c بود.

void insert(CandyBar c,char* ch,double d,int i)

2. دوم در رابطه با سوالتان باید بگویم چون ch یک رشته است باید از دستور strcpy استفاده نمایید.

من کدتان را اصلاح کردم:

#include<iostream>
using namespace std;
struct CandyBar
{
char name[30];
double weight;
int calory;
};
char ch[]="Millennium Munch";
void insert(CandyBar c,char* c=ch,double d=2.85,int i=350);
void display(const CandyBar c);
int main()
{
CandyBar cb;
insert(cb,"test",62,12);
display(cb);
return 0;
}
void insert(CandyBar c,char* ch,double d,int i)
{
strcpy(c.name,ch); //c.name=*ch; //doroste? c.name=*c !!
c.weight=d;
c.calory=i;
}
void display(const CandyBar c)
{
cout<<"name:"<<c.name<<endl;
cout<<"weight:"<<c.weight<<endl;
cout<<"calory:"<<c.calory<<endl;
}

موفق باشید !
ممنون از پاسختون.
ولی چرا باید به جای c از ch استفاده کرد؟ این ی آرگومان تابع است و به صورت اختیاری میتونم نام گذاری کنم، درسته؟

هم دانشگاهی
دوشنبه 03 آبان 1389, 07:12 صبح
خب شما گفتید:

void insert(CandyBar c,char* c,double d,int i)


چون دوتا c در آرگومان های تابع وجود دارد کامپایلر این ها را از هم تشخیص نمیدهد!

به همین دلیل از ch استفاده کردم!

موفق باشید !