定义一个图书类Book,数据成员包含name(书名)、author(作者)、price(定价),为该类定义构造函数,并提供各数据成员的getXXX()和setXXX()函数。在main函数中创建图书对象数组,并将该数组中的元素按图书价格升序排序。
时间: 2023-09-11 18:05:30 浏览: 117
### 回答1:
以下是代码实现:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
class Book {
private:
string name;
string author;
double price;
public:
Book(string name, string author, double price) {
this->name = name;
this->author = author;
this->price = price;
}
string getName() const {
return name;
}
void setName(string name) {
this->name = name;
}
string getAuthor() const {
return author;
}
void setAuthor(string author) {
this->author = author;
}
double getPrice() const {
return price;
}
void setPrice(double price) {
this->price = price;
}
};
bool cmp(const Book& b1, const Book& b2) {
return b1.getPrice() < b2.getPrice();
}
int main() {
Book books[] = {
Book("C++ Primer", "Stanley B.Lippman", 99.9),
Book("Effective C++", "Scott Meyers", 59.9),
Book("Design Patterns", "Erich Gamma", 69.9),
Book("The C++ Programming Language", "Bjarne Stroustrup", 89.9)
};
const int len = sizeof(books) / sizeof(books[0]);
sort(books, books + len, cmp);
for (int i = 0; i < len; i++) {
cout << books[i].getName() << " " << books[i].getAuthor() << " " << books[i].getPrice() << endl;
}
return 0;
}
```
输出结果:
```
Effective C++ Scott Meyers 59.9
Design Patterns Erich Gamma 69.9
The C++ Programming Language Bjarne Stroustrup 89.9
C++ Primer Stanley B.Lippman 99.9
```
### 回答2:
定义一个图书类Book,包含数据成员name(书名)、author(作者)、price(定价)。为该类定义构造函数,并提供各数据成员的getXXX()和setXXX()函数。
```python
class Book:
def __init__(self, name, author, price):
self.name = name
self.author = author
self.price = price
def getName(self):
return self.name
def getAuthor(self):
return self.author
def getPrice(self):
return self.price
def setName(self, name):
self.name = name
def setAuthor(self, author):
self.author = author
def setPrice(self, price):
self.price = price
```
在main函数中创建图书对象数组,并将该数组中的元素按图书价格升序排序。
```python
def main():
# 创建图书对象数组
books = [Book("书名1", "作者1", 20), Book("书名2", "作者2", 10), Book("书名3", "作者3", 30)]
# 按图书价格升序排序
books.sort(key=lambda book: book.getPrice())
# 打印排序后的图书信息
for book in books:
print("书名:{},作者:{},定价:{}".format(book.getName(), book.getAuthor(), book.getPrice()))
if __name__ == "__main__":
main()
```
运行结果如下:
```
书名:书名2,作者:作者2,定价:10
书名:书名1,作者:作者1,定价:20
书名:书名3,作者:作者3,定价:30
```
完成以上代码后,我们定义了一个图书类Book,并成功创建了图书对象数组,并将该数组中的元素按图书价格升序排序,并打印排序后的结果。
### 回答3:
图书类Book的定义如下:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
class Book {
private:
string name;
string author;
double price;
public:
Book(string bookName, string bookAuthor, double bookPrice) {
name = bookName;
author = bookAuthor;
price = bookPrice;
}
// 获取书名
string getName() {
return name;
}
// 设置书名
void setName(string bookName) {
name = bookName;
}
// 获取作者
string getAuthor() {
return author;
}
// 设置作者
void setAuthor(string bookAuthor) {
author = bookAuthor;
}
// 获取定价
double getPrice() {
return price;
}
// 设置定价
void setPrice(double bookPrice) {
price = bookPrice;
}
};
// 比较函数,用于排序时比较两个书的价格
bool comparePrice(Book b1, Book b2) {
return b1.getPrice() < b2.getPrice();
}
int main() {
// 创建图书对象数组
Book books[3] = {
Book("书名1", "作者1", 15.50),
Book("书名2", "作者2", 20.00),
Book("书名3", "作者3", 10.00)
};
// 按图书价格升序排序
sort(books, books + 3, comparePrice);
// 输出排序后的结果
for (int i = 0; i < 3; i++) {
cout << "书名:" << books[i].getName() << " 作者:" << books[i].getAuthor() << " 定价:" << books[i].getPrice() << endl;
}
return 0;
}
```
以上代码定义了一个名为Book的图书类,包含了name、author和price三个成员变量,以及构造函数和getXXX()、setXXX()函数。在主函数main()中创建了一个长度为3的图书对象数组,并使用sort()函数将数组中的图书对象按照价格升序进行排序。最后通过遍历输出排序后的结果。
注意:由于题目中没有给出图书对象数组的长度,此处假设为3,并且定义了comparePrice()函数作为排序的比较函数。