C++编译不通过啊
#include <iostream>
using namespace std;
#include <string.h>
class InvoiceItem
{
private:
char *p;
int n;
float costprice;
float unitprice;
float all;
float tax;
float total;
public:
InvoiceItem(char *,float);
void cal();
void plus(int);//没写析构函数
int getn(){return n;}
float getc(){return costprice;}
float getu(){return unitprice;}
float gettotal(){return total;}
float getall(){return all;}
float gettax(){return tax;}
char *getname(){return *p;}*/
};
InvoiceItem::InvoiceItem(char *name,float cost)
{
p=new char[strlen(name+1)];
strcpy(p,name);
costprice=cost;
unitprice=cost*1.3;
}
void InvoiceItem::cal()
{
all=n*unitprice;
tax=all*0.06;
total=all+tax;
}
void InvoiceItem::plus(int num)
{
while(1)
{
if(num>=0)
{
n=num;
break;
}
else
{
cout<<"购买的商品数量不能为负数!"<<endl;
cin>>num;
}
}
}
void main()
{
InvoiceItem item[5]={
InvoiceItem("computer",4999),
InvoiceItem("book",40),
InvoiceItem("medicine",10),
InvoiceItem("food",5),
InvoiceItem("fruit",20)
};
int num,i,flag=1,n=0;
float allprice=0,tax=0;
char name[30],select;
cout<<"本店商品列表:"<<endl;
for(i=0;i<5;i++)
{
cout<<"商品名:"<<Item[i].getname()<<"\t成本价:"<<Item[i].getc()<<"\t单价:"<<Item[i].getu()<<endl;
}
while(1)
{
cout<<"请输入要购买的商品的名称:"<<endl;
while(1)
{
cin.getline(name,30);
cin.ignore();
for(i=0;i<5;i++)
{
if(strcmp(Item[i].getname(),name)==0)
{
flag=0;
index[n++]=i;
}
}
if(flag=0) break;
else
{cout<<"输入的商品不存在!请重新输入!"<<endl;}
}
cout<<"请输入购买的数量:"
cin>>num;
Item[index[n-1]].plus(num);
Item[index[n-1]].cal();
cout<<"您是否要继续购买?Y/N"
while(1)
{
cin>>select;
if(select=='Y'||select=='N') break;
else
cout<<"输入不正确 请重新输入"<<endl;
}
if(select=='N')
break;
}
//下面输出小计
cout<<"本次交易如下:"<<endl;
for(i=0;i<5;i++)
{
if(item[i].getn()!=0)
{
cout<<"商品名:"<<item[i].getname()<<"\t数量:"<<item[i].getn()<<"\t小计:"<<item[i].gettotal()<<endl;
allprice+=item[i].getall();
tax+=item[i].gettax();
}
}
cout<<"总价(不含税):"<<allprice<<endl;
cout<<"总价(含税)"<<(allprice+tax)<<endl;
cout<<"税款:"<<tax<<endl;*/
}
[解决办法]
#include <iostream>using namespace std;#include <string.h>class InvoiceItem{private:char *p;int n;float costprice;float unitprice;float all;float tax;float total;public:InvoiceItem(char *,float);void cal();void plus(int);//没写析构函数int getn(){return n;}float getcc(){return costprice;}//[color=#FF0000]getc换成getcc[/color]float getu(){return unitprice;}float gettotal(){return total;}float getall(){return all;}float gettax(){return tax;}char *getname(){return p;} //[color=#FF0000]这里只是返回p,而且*/要去掉[/color]};InvoiceItem::InvoiceItem(char *name,float cost){p=new char[strlen(name+1)];strcpy(p,name);costprice=cost;unitprice=cost*1.3;}void InvoiceItem::cal(){all=n*unitprice;tax=all*0.06;total=all+tax;}void InvoiceItem::plus(int num){while(1){if(num>=0){n=num;break;}else{cout<<"购买的商品数量不能为负数!"<<endl;cin>>num;}}}void main(){InvoiceItem Item[5]={ //[color=#FF0000]item换成Item[/color]InvoiceItem("computer",4999),InvoiceItem("book",40),InvoiceItem("medicine",10),InvoiceItem("food",5),InvoiceItem("fruit",20)};int num,i,flag=1,n=0;float allprice=0,tax=0;char name[30],select;char index[BUFSIZ];//[color=#FF0000]定义index数组[/color]cout<<"本店商品列表:"<<endl;for(i=0;i<5;i++){cout<<"商品名:"<<Item[i].getname()<<"\t成本价:"<<Item[i].getcc()<<"\t单价:"<<Item[i].getu()<<endl;}while(1){cout<<"请输入要购买的商品的名称:"<<endl;while(1){cin.getline(name,30);cin.ignore();for(i=0;i<5;i++){if(strcmp(Item[i].getname(),name)==0){flag=0;index[n++]=i;//[color=#FF0000]index没有定义[/color]}}if(0==flag) break;//[color=#FF0000]养成良好的习惯,比较相等时常量放在前面[/color]else{cout<<"输入的商品不存在!请重新输入!"<<endl;}}cout<<"请输入购买的数量:";//[color=#FF0000]缺少;[/color]cin>>num;Item[index[n-1]].plus(num);Item[index[n-1]].cal();cout<<"您是否要继续购买?Y/N";//[color=#FF0000]缺少;[/color]while(1){cin>>select;if(select=='Y'||select=='N') break;elsecout<<"输入不正确 请重新输入"<<endl;}if(select=='N')break;}//下面输出小计cout<<"本次交易如下:"<<endl;for(i=0;i<5;i++){if(item[i].getn()!=0){cout<<"商品名:"<<item[i].getname()<<"\t数量:"<<item[i].getn()<<"\t小计:"<<item[i].gettotal()<<endl;allprice+=item[i].getall();tax+=item[i].gettax();}}cout<<"总价(不含税):"<<allprice<<endl;cout<<"总价(含税)"<<(allprice+tax)<<endl;cout<<"税款:"<<tax<<endl;*/}
[解决办法]
没看题,只是改了一下错误和编码规范
#include "stdafx.h"#include <string>#include <iostream>using namespace std;class InvoiceItem{private: char *p; int n; float costprice; float unitprice; float all; float tax; float total;public: InvoiceItem(char *,float); void cal(); void plus(int);//没写析构函数 int getn() { return n; } float getc() { return costprice; } float getu() { return unitprice; } float gettotal() { return total; } float getall() { return all; } float gettax() { return tax; } char *getname() { return p; }};InvoiceItem::InvoiceItem(char *name, float cost){ p = new char[strlen(name + 1)]; strcpy(p, name); costprice = cost; unitprice = cost * 1.3;}void InvoiceItem::cal(){ all = n * unitprice; tax = all * 0.06; total = all + tax;}void InvoiceItem::plus(int num){ while(1) { if(num>=0) { n = num; break; } else { cout << "购买的商品数量不能为负数!" << endl; cin >> num; } }}void main(){ InvoiceItem Item[5] = { InvoiceItem("computer", 4999), InvoiceItem("book", 40), InvoiceItem("medicine", 10), InvoiceItem("food", 5), InvoiceItem("fruit", 20) }; int num, i, flag = 1, n=0; int index[30]; float allprice=0, tax=0; char name[30], select; cout << "本店商品列表:" << endl; for (i = 0; i < 5; i++) { cout << "商品名:" << Item[i].getname() << "\t成本价:" << Item[i].getc() << "\t单价:" << Item[i].getu() << endl; } while(1) { cout << "请输入要购买的商品的名称:" << endl; while (1) { cin.getline(name, 30); cin.ignore(); for (i = 0; i < 5; i++) { if (0 == strcmp(Item[i].getname(), name)) { flag = 0; index[n++] = i; } } if(0 == flag){break;} cout << "输入的商品不存在!请重新输入!" << endl; } cout << "请输入购买的数量:"; cin >> num; Item[index[n - 1]].plus(num); Item[index[n - 1]].cal(); cout << "您是否要继续购买?Y/N"; while (1) { cin >> select; if('Y' == select||'N' == select){break;} cout << "输入不正确 请重新输入" << endl; } if('N' == select){break;} } //下面输出小计 cout << "本次交易如下:" << endl; for(i = 0; i < 5; i++) { if(0 != Item[i].getn()) { cout << "商品名:" << Item[i].getname() << "\t数量:" << Item[i].getn() << "\t小计:" << Item[i].gettotal() << endl; allprice += Item[i].getall(); tax += Item[i].gettax(); } } cout << "总价(不含税):" << allprice << endl; cout << "总价(含税)" << (allprice + tax) <<endl; cout << "税款:" << tax << endl;}
[解决办法]
#include <iostream>#include <string.h>using namespace std;class InvoiceItem{private: char *p; int n; float costprice; float unitprice; float all; float tax; float total;public: InvoiceItem(char *,float); void cal(); void plus(int);//没写析构函数 int getn(){return n;} float getc(){return costprice;} float getu(){return unitprice;} float gettotal(){return total;} float getall(){return all;} float gettax(){return tax;} char *getname(){return p;}};InvoiceItem::InvoiceItem(char *name, float cost){ p = new char[strlen(name+1)]; strcpy(p, name); costprice = cost; unitprice = cost * 1.3;}void InvoiceItem::cal(){ all = n * unitprice; tax = all * 0.06; total = all + tax;}void InvoiceItem::plus(int num){ while(1) { if(num >= 0) { n = num; break; } else { cout<<"购买的商品数量不能为负数!"<<endl; cin>>num; } }}void main(){ InvoiceItem Item[5]={ InvoiceItem("computer",4999), InvoiceItem("book",40), InvoiceItem("medicine",10), InvoiceItem("food",5), InvoiceItem("fruit",20) }; int num, i, flag = 1, n = 0; float allprice = 0, tax = 0; char name[30], select; char index[100]; cout<<"本店商品列表:"<<endl; for(i = 0; i < 5; i++) { cout<<"商品名:"<<Item[i].getname()<<"\t成本价:"<<Item[i].getc()<<"\t单价:"<<Item[i].getu()<<endl; } while(1) { cout<<"请输入要购买的商品的名称:"<<endl; while(1) { cin.getline(name,30); cin.ignore(); for(i = 0; i < 5; i++) { if(strcmp(Item[i].getname(),name) == 0) { flag = 0; index[n++] = i; } } if(flag == 0) break; else { cout<<"输入的商品不存在!请重新输入!"<<endl; } } cout<<"请输入购买的数量:"; cin>>num; Item[index[n-1]].plus(num); Item[index[n-1]].cal(); cout<<"您是否要继续购买?Y/N"; while(1) { cin>>select; if(select == 'Y' || select == 'N') break; else cout<<"输入不正确 请重新输入"<<endl; } if(select == 'N') break; } //下面输出小计 cout<<"本次交易如下:"<<endl; for(i = 0; i < 5; i++) { if(Item[i].getn() != 0) { cout<<"商品名:"<<Item[i].getname()<<"\t数量:"<<Item[i].getn()<<"\t小计:"<<Item[i].gettotal()<<endl; allprice += Item[i].getall(); tax += Item[i].gettax(); } } cout<<"总价(不含税):"<<allprice<<endl; cout<<"总价(含税)"<<(allprice+tax)<<endl; cout<<"税款:"<<tax<<endl;}