首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++编译不通过啊解决方案

2012-04-10 
C++编译不通过啊#include iostreamusing namespace std#include string.hclass InvoiceItem{private:

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;*/
}

[解决办法]

C/C++ code
#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;*/} 


[解决办法]
没看题,只是改了一下错误和编码规范

C/C++ code
#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;}
[解决办法]
C/C++ code
#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;} 

热点排行