У меня есть код, который выглядит так
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
struct Bill{
std::string name;
int bill_value;
};
enum Status{abnorm, norm};
bool read(std::ifstream &f, Bill &e, Status &st);
int main()
{
std::ifstream x("inp.txt");
if (x.fail() ) {
std::cout << "Error!\n";
return 1;
}
Bill dx;
Status sx;
int s = 0;
while(read(x,dx,sx)) {
s += dx.bill_value;
}
std::cout << "Today income: " << s << std::endl;
return 0;
}
bool read(std::ifstream &f, Bill &e, Status &st){
std::string line;
getline(f,line);
if (!f.fail() && line!="") {
st = norm;
std::istringstream in(line);
in >> e.name;
std::string product;
int value;
e.bill_value= 0;
while( in >> product >> value) e.bill_value+= value;
}
else st=abnorm;
return norm==st;
}
Входной файл называется inp.txt
и выглядит так:
Joe tv 1200 mouse 50000
Peter glass 8000
Harry mouse 8200 usb 8000 headphones 98900
David book 500 800 mouspad 900
Liam phone 8000 cooler 3000 headphones 3000
Daniel laptop 700 pot 9000
Первым всегда является имя клиента , который следует за продуктом (ами), который он купил, и его стоимостью.
Например, Петр купил стакан за 8000, но Дэвид купил две книги по двум разным ценам.
И вот тут-то и возникает моя проблема, потому что по линии Дэвида программа возвращает только значение первой книги, а не сумму строки, и я хотел бы узнать, какую прибыль магазин получил мне нужно было бы также рассчитать сумму счета Дэвида.