Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <cstring>
- #include <fstream>
- #pragma warning (disable:4996)
- using namespace std;
- const int l_name = 30;
- const int l_year = 5;
- const int l_pay = 10;
- const int l_buf = l_name + l_year + l_pay;
- const char filename[] = "dbase.txt";
- class Man
- {
- public:
- Man(int lName = 30);
- ~Man();
- bool CompareName(const char*) const;
- int GetBirthYear() const { return birth_year;}
- double GetPay() const { return pay;}
- char* GetName() const { return pName;}
- void Print() const;
- void SetBirthYear(const char*);
- void SetName(const char*);
- void SetPay(const char*);
- private:
- char* pName;
- int birth_year;
- double pay;
- };
- ////////////////////////
- Man::Man(int lName)
- {
- cout << "Constructor is working" << endl;
- pName = new char[lName + 1];
- }
- Man::~Man()
- {
- cout << "Destructor is woking" << endl;
- delete []pName;
- }
- void Man::SetName(const char* fromBuf)
- {
- strncpy(pName, fromBuf, l_name);
- pName[l_name] = 0;
- }
- void Man::SetBirthYear(const char* fromBuf)
- {
- birth_year = atoi(fromBuf + l_name);
- }
- void Man::SetPay(const char* fromBuf)
- {
- pay = atof(fromBuf + l_name + l_year);
- }
- bool Man::CompareName(const char* name) const
- {
- if ((strstr(pName, name)) && (pName[strlen(name)] == ' ' ))
- return true;
- else
- return false;
- }
- void Man::Print() const
- {
- cout << pName << birth_year << " " << pay << endl;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- setlocale(LC_ALL, "RUSSIAN");
- const int maxn_record = 10;
- Man man[maxn_record];
- char buf [l_buf + 1];
- char name [l_name + 1];
- ifstream fin("e:\\dbase.txt");
- if (!fin)
- {
- cout << "Нет файла " << filename << endl;
- return 1;
- }
- int i = 0;
- while (fin.getline(buf, l_buf))
- {
- if (i >= maxn_record)
- {
- cout << "Слишком длинный файл";
- return 1;
- }
- man[i].SetName(buf);
- man[i].SetBirthYear(buf);
- man[i].SetPay(buf);
- i++;
- }
- int n_record = 4, n_man = 0;
- double mean_pay = 0;
- while(true)
- {
- cout << "Введите фамилию или слово end:";
- cin >> name;
- if (0 == strcmp(name, "end")) break;
- bool not_found = true;
- for (int i = 0; i < n_record; ++i)
- {
- cout << man[i];
- if (man[i].CompareName(name))
- {
- man[i].Print();
- n_man++;
- mean_pay += man[i].GetPay();
- not_found = false;
- break;
- }
- }
- if (not_found)
- cout << "Такого сотрудника нет" << endl;
- }
- if (n_man)
- cout << "Средний оклад: " << mean_pay / n_man << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement