![]() |
#2
rjsp2013-05-20 08:26
|
主程序

#include<iostream>
#include<string>
#include<vector>
#include"Item_base.hpp"
#include"Bulk_item.hpp"
using namespace std;
int main(){
vector<Item_base>itemvec;
string isbn;
double price,qty,discount;
cout<<"Enter some Bulk_item objects"<<endl;
while(cin>>isbn>>price>>qty>>discount){
itemvec.push_back(Bulk_item(isbn,price,qty,discount));
}
double sum=0.0;
for(vector<Item_base>::iterator iter=itemvec.begin();
iter!=itemvec.end();++iter)
sum+=iter->net_price(100);
cout<<sum<<endl;
return 0;
}
#include<string>
#include<vector>
#include"Item_base.hpp"
#include"Bulk_item.hpp"
using namespace std;
int main(){
vector<Item_base>itemvec;
string isbn;
double price,qty,discount;
cout<<"Enter some Bulk_item objects"<<endl;
while(cin>>isbn>>price>>qty>>discount){
itemvec.push_back(Bulk_item(isbn,price,qty,discount));
}
double sum=0.0;
for(vector<Item_base>::iterator iter=itemvec.begin();
iter!=itemvec.end();++iter)
sum+=iter->net_price(100);
cout<<sum<<endl;
return 0;
}
基类

class Item_base{
public:
Item_base(const std::string &book="",double sales_price=0.0):isbn(book),price(sales_price){
}
std::string book()const{
return isbn;
}
virtual double net_price(std::size_t n)const {
return n*price;
}
virtual ~Item_base(){
}
private:
std::string isbn;
protected:
double price;
};
public:
Item_base(const std::string &book="",double sales_price=0.0):isbn(book),price(sales_price){
}
std::string book()const{
return isbn;
}
virtual double net_price(std::size_t n)const {
return n*price;
}
virtual ~Item_base(){
}
private:
std::string isbn;
protected:
double price;
};
继承类

class Bulk_item:public Item_base{
public :
Bulk_item(const std::string &book="",double sales_price=0.0,size_t qty,double dis):
Item_base(book,price),min_qty(qty),discount(dis){ }
double net_price(std::size_t cnt)const{
if(cnt>=min_qty)
return cnt*(1-discount)*price;
else
return cnt*price;
}
private:
std::size_t min_qty;
double discount;
};
public :
Bulk_item(const std::string &book="",double sales_price=0.0,size_t qty,double dis):
Item_base(book,price),min_qty(qty),discount(dis){ }
double net_price(std::size_t cnt)const{
if(cnt>=min_qty)
return cnt*(1-discount)*price;
else
return cnt*price;
}
private:
std::size_t min_qty;
double discount;
};
当我一次输入 book 3 20 0.9
时,输出应该为 300 可是却输出NAN。 no a number ??找不到错误在哪。
虽然这个原理知识都懂了,但是得不到想要的结果总是难受的,请前辈们指教。