题目描述
某出版社需要统计目前最畅销的30本书的售书情况。设:每一本书需保存的信息有:书名,库存量,单价,出书统计数;从键盘每次输入一本书的书名(假设购买该出版社的读者有100人);程序根据输入的书名,使该书的库存量减少一本,售书统计数增加1;按售书统计数的多少从大到小排序输出书名,售书统计数,库存量。
为方便录入输出 设N = 3种书 M = 5个买家。
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
// 结构体排序 图书管理系统
using namespace std;
const int N = 3;
const int M = 5;
int n,m;
struct System
{
char name[20];//不用string 方便后面对应名字的书库存量减少 用到字符串比较
int sum ;
double price;
int out ;//魔人初始化0
bool operator> (const System& t) const
{
return out > t.out;
}
}book[N];
int main()
{
cin>>n>>m;
for(int i = 0; i < n;i++)
{
//cout<<"录入书目:"<<endl;
cin>>book[i].name>>book[i].sum>>book[i].price;
}
for(int i = 0; i < m;i++)
{
//cout<<"售出书目:"<<endl;
//cin>>book[i].name;错误 这是录入书
char s[20];
cin>>s;
//**
for(System & b : book)//取出每一本书和售出对比 如果有 更新这本书的量
{
//查找相同字符串
if(!strcmp(s,b.name))//s == b.name
{
b.sum--;
b.out++;
puts("出库成功!");
break;
}
}
}
stable_sort(book,book + n,greater<System>());
for(System & b :book)
{
cout<<b.name<<' '<<b.sum<<' '<<b.price<<' '<<b.out<<endl;
}
return 0;
}
/*
输入
高数18讲 20 38.8
张宇1000题 30 28.8
基础30讲 40 88.8
输出
请输入书籍信息:
请依次输入第1本书的书名,库存量,单价:
高数18讲 20 38.8
请依次输入第2本书的书名,库存量,单价:
张宇1000题 30 28.8
请依次输入第3本书的书名,库存量,单价:
基础30讲 40 88.8
请依次输入要销售的书的书名:
第1本书的书名:高数18讲
出库成功!
第2本书的书名:高数18讲
出库成功!
第3本书的书名:高数18讲
出库成功!
第4本书的书名:张宇1000题
出库成功!
第5本书的书名:基础30讲
出库成功!
书名:高数18讲 库存:17 单价:38.80 销量:3
书名:张宇1000题 库存:29 单价:28.80 销量:1
书名:基础30讲 库存:39 单价:88.80 销量:1
*/
//struct 内不能写运算式 只能定理某个量