sandersik
@sandersik
Занимаюсь программированием 2-3 года

Как сложить числа из файла, если в строке определенное слово?

Имеем такой формат "базы данных " :
OBZtjrX.png
Далее человек вводит имя базы:
oRMWZX4.png
После программа должна находить имя этой базы в каждой строке(их может быть сколько угодно) и складывать значения зарплаты они записываются в формате: *число
string namebase;
        cout << "Okey, write name base: ";
        cin >> namebase;

2. Вопрос: Вывести список сотрудников отдела, у которых зарплата ниже введенной с клавиатуры.
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
myjcom
@myjcom Куратор тега C++
Хоть твой вопрос и похож на задание (см. Правила)
Но тем не менее, вот
<наколенная болванка>

#include<iostream>
#include<string>
#include<fstream>
#include<algorithm>
#include<vector>
#include<iterator>
#include<numeric>
using namespace std;

struct Record {
  string surname;
  string dbname;
  int salary;
};

istream& operator>>(istream& is, Record& r)
{
  is >> r.surname;
  is.ignore(6, '|');
  is >> r.dbname;
  is.ignore(6, '|');
  is.ignore(6, '*');
  is >> r.salary;
  return is;
}

ostream& operator<<(ostream& os, const Record& r)
{
  os << r.surname << " "
     << r.dbname  << " "
     << r.salary;
  return os;
}

int main()
{
 vector<Record> database;
 if(ifstream file("databasename.db"); file)
 {
   copy(istream_iterator<Record>(file), {}, back_inserter(database));
 }

 string db;
 cin >> db;

 int acc = accumulate(database.begin(), database.end(), 0, [&](int init, Record const& rec){
     return (db == rec.dbname) ? init + rec.salary : init;
 });

 cout << db << ": " << acc;

 //copy(database.begin(), database.end(), ostream_iterator<Record>(cout, "\n"));
}


2. Сам
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы