#include <string> #include <iostream> #include<algorithm> using namespace std; struct book { string name; string price; }; bool compare(book a, book b) { return a.name < b.name; } int main() { int n; cin >> n; book a[3]; int i = 0; while (i < n) { cin >> a[i].name >> a[i].price; i++; } sort(a[0].name, a[n - 1].name, compare); for (int k = 0;k < n; k++) { cout << a[k].price << ',' << a[k].name << endl; } return 0; }
时间: 2024-04-01 08:31:32 浏览: 9
这是一段 C++ 代码,它定义了一个书的结构体 book,其中包含书名和价格两个成员变量。在主函数中,它首先读入一个整数 n,表示有 n 本书需要排序。然后它使用一个循环来读入每本书的名字和价格,并将它们存储在一个 book 类型的数组 a 中。最后,它使用 sort 函数对数组 a 中的书按照书名进行排序,排序的依据是 compare 函数。最后,它遍历数组 a 并将每本书的价格和名字按照指定的格式输出到屏幕上。
该程序存在一些问题,比如:
1. sort 函数的使用方式不正确,应该是 sort(a, a + n, compare)。
2. 在 compare 函数中,应该比较的是书名而不是价格,应该是 return a.name < b.name。
3. 该程序只支持排序 3 本书,需要改进为支持任意数量的书。
相关问题
将上述代码存在的问题,用代码京雄修改
好的,以下是我修改后的代码:
```cpp
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
struct book {
string name;
string price;
};
bool compare(book a, book b) {
return a.name < b.name;
}
int main() {
int n;
cin >> n;
book a[n]; // 改为可变长度数组
for (int i = 0; i < n; i++) { // 使用 for 循环读入每本书的名字和价格
cin >> a[i].name >> a[i].price;
}
sort(a, a + n, compare); // 修正 sort 函数的使用方式
for (int k = 0; k < n; k++) {
cout << a[k].price << ',' << a[k].name << endl;
}
return 0;
}
```
这个修改后的程序使用了可变长度数组来存储书的信息,同时使用 for 循环来读入每本书的名字和价格。sort 函数的使用方式也被修改为了正确的形式。
书店进货入库记录的代码实现c++ stl
以下是一个简单的使用C++ STL实现书店进货入库记录的示例代码:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 定义一个结构体表示书本信息
struct Book {
string name;
string author;
double price;
int quantity;
};
int main()
{
// 定义一个存储书本信息的 vector 容器
vector<Book> books;
// 循环输入书本信息
while (true) {
Book book;
cout << "请输入书名:";
getline(cin, book.name);
if (book.name.empty()) { // 输入为空则退出循环
break;
}
cout << "请输入作者:";
getline(cin, book.author);
cout << "请输入价格:";
cin >> book.price;
cout << "请输入数量:";
cin >> book.quantity;
cin.ignore(); // 忽略cin输入缓冲区中的回车符
books.push_back(book); // 将书本信息添加到容器中
}
// 输出所有书本信息
cout << "书名\t作者\t价格\t数量" << endl;
for (const auto& book : books) {
cout << book.name << '\t' << book.author << '\t' << book.price << '\t' << book.quantity << endl;
}
return 0;
}
```
这个程序使用了`vector`容器来存储书本信息,每次循环输入一本书的信息,然后将其添加到`vector`中。最后输出所有书本的信息。注意,为了确保输入的完整性,需要使用`getline()`函数读取整行输入,并使用`cin.ignore()`函数忽略`cin`输入缓冲区中的回车符。
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)