基于顺序存储结构的图书信息表的修改
#include<iostream>
#include <string>
#include <iomanip>
#include<algorithm>
using namespace std;
typedef struct Book{
string BookNo;
string name;
double price;
Book(){}
Book(string BookNo,string name,double price){
this->BookNo = BookNo;
this->name = name;
this->price = price;
}
}Book;
typedef struct{
Book books[100];
int length;
}BookList;
void InitBookList(BookList &L){
L.length = 0;
}
void InsertBook(BookList &L,Book book){
L.books[L.length].BookNo = book.BookNo;
L.books[L.length].name = book.name;
L.books[L.length].price = book.price;
L.length++;
}
void printBook(BookList L){
for(int i = 0;i<L.length;i++){
cout<<L.books[i].BookNo<<" "<<L.books[i].name<<" ";
cout<<fixed<<setprecision(2)<<L.books[i].price<<endl;
}
}
int main(){
string BookNo,name;
double price;
BookList L;
InitBookList(L);
while(1){
cin>>BookNo;
cin>>name;
cin>>price;
if(BookNo == "0") break;
Book book = Book(BookNo,name,price);
InsertBook(L,book);
}
auto cal_avg = [](BookList L){
double avg = 0;
for(int i = 0;i<L.length;i++){
avg+=L.books[i].price;
}
avg =avg/L.length;
return avg;
};
double avg = cal_avg(L);
auto update = [avg](BookList &L){
for(int i =0;i<L.length;i++){
if(L.books[i].price >= avg){
L.books[i].price *=1.1;
}else{
L.books[i].price*=1.2;
}
}
};
cout<<fixed<<setprecision(2)<<avg<<endl;
update(L);
printBook(L);
return 0;
}