chapter16test10

原创 2015年07月07日 22:14:39

这一题说实话我都没有看的太明白。。。我没有做到题目要求的用指针参数来定义三个比较函数,我是按照书上原来的worsethan()修改的,我会再试试指针方法,有成果在回来改程序,我是一个自强不息的水货!fighting

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<memory>
using namespace std;
struct review
{
string title;
int rating;
double price;
};
bool price(const review &r1, const review &r2);
bool rate(const review &r1, const review &r2);
bool alpha(const review &r1,const review &r2);
bool file(shared_ptr<review> r);
void show(const review &r);
int main()
{
vector<review> book;
shared_ptr<review>temp(new review);
while (file(temp))
book.push_back(*temp);
int num = book.size();
if (num > 0)
{
int ch;
cout << "Thanks for your input,choose your way to display:\n";
cout << "1.Original 2.Alphabet 3.Uprating 4.Downrating 5.UpPrice 6.Downprice \n";
while (cin>>ch)
{
switch (ch)
{
case 1:for_each(book.begin(), book.end(), show); break;
case 2:sort(book.begin(), book.end(), alpha);
for_each(book.begin(), book.end(), show); break;
case 3:sort(book.begin(), book.end(), rate); 
for_each(book.begin(), book.end(), show); break;
case 4:
for_each(book.rbegin(), book.rend(), show); break;
case 5:sort(book.begin(), book.end(), price);
for_each(book.begin(), book.end(), show); break;
case 6:
for_each(book.rbegin(), book.rend(), show); break;
default:
break;
}
}
}
else
cout << "No info inputed.\n";
return 0;
}




bool alpha(const review &r1, const review &r2)
{
if (r1.title < r2.title)
return true;
else
return false;
}
bool rate(const review &r1, const review &r2)
{
if (r1.rating < r2.rating)
return true;
else
return false;
}
bool price(const review &r1, const review &r2)
{
if (r1.price < r2.price)
return true;
else
return false;
}
bool file(shared_ptr<review> r)
{
cout << "Enter book title(enter quit to quit):";
string t; getline(cin, t);
r->title = t; cout << "OK";
if (r->title == "quit")
return false;
cout << "Enter book rating :";
cin >> r->rating;
if (!cin)
return false;
cout << "Enter book price :";
cin >> r->price;
if (!cin)
return false;
while (cin.get() != '\n')
continue;
return true;
}
void show(const review &r)
{
cout << r.rating << "\t" << r.title << "\t" << r.price<<endl;
}

thinking in java test chapter9接口(1)~(10)

抽象方法是没有方法体的方法,java提供的一种机制,仅有声明而没有方法体。语法:abstract void f(); 包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽...

thinking in java test chapter10(1)~(21)

练习(1):编写一个名为Outer的类,它包含一个名为Inner的类。在Outer中添加一个方法,它返回一个Inner类型的对象。在main()中,创建并初始化一个指向某个Inner对象的引用。 ...

thinking in java test chapter7练习(1)~(10)组合与继承

练习(1):创建一个简单的类。在第二个类中,将一个引用定义为第一个类的对象。运用惰性初始化来实例化这个对象。 编译器不会给每个引用默认创建对象,因为这样会造成资源的浪费。想要初始化引用,必须按这种格...

chapter12test2

写了一上午终于把test2搞定,技术还有待提高,要多练习,一点半了,有点饿,去吃点什么好的补补脑子 我把树上的程序改了,题目里面没有要求的都删减了,留下的都用上了,最费时的是类复制和字符指针赋值,然...

thinking in java test chapter8多态(1)~(12)

练习(1):创建一个Cycle类,它具有子类Unicycle,Bycycle,Tricycle.演示每一个类型的实例都可以经由ride()方法向上转型为Cycle. 向上转型就是允许将多种从同一基...

chapter15test1

这一题跟树上的程序差不多,只是要求tv与remote互为友元,并且在remote中定义一个新的状态变量,我用的state,并且在tv中定义了一个change(remote &),以下是程序,因为所有的...

chapter11test1

这个程序的主要都是书上清单11.15; 我不喜欢书上的单位标示,就自主修改了一下,意思差不多,那个文件输出是第一次尝试,感觉挺好的 vector.h #ifndef VECTOR_H_ #define...

thinking in java test chapter6练习(1)~(9)以及翻译问题

练习(1):在某个包中创建一个类,在这个类所处的包外部创建该类的实例。 代码如下:public class testTest6_1 { public static void main(S...

thinking in java test chapter8(13)~(17)

练习(13):在ReferenceCounting.java中添加一个finalize()方法,用来检校终止条件。 finalize()方法是垃圾回收器在清理对象是会优先调用的方法,用以清理一些垃圾...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:chapter16test10
举报原因:
原因补充:

(最多只允许输入30个字)