View Full Version : error های برنامه
fshb_ 1370
یک شنبه 02 آبان 1389, 21: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, 23: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, 23: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, 08:12 صبح
خب شما گفتید:
void insert(CandyBar c,char* c,double d,int i)
چون دوتا c در آرگومان های تابع وجود دارد کامپایلر این ها را از هم تشخیص نمیدهد!
به همین دلیل از ch استفاده کردم!
موفق باشید !
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.