Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <cstring>
  4. #include <fstream>
  5. #pragma warning (disable:4996)
  6. using namespace std;
  7.  
  8. const int l_name = 30;
  9. const int l_year = 5;
  10. const int l_pay = 10;
  11. const int l_buf = l_name + l_year + l_pay;
  12. const char filename[] = "dbase.txt";
  13.  
  14. class Man
  15. {
  16. public:
  17. Man(int lName = 30);
  18. ~Man();
  19. bool CompareName(const char*) const;
  20. int GetBirthYear() const { return birth_year;}
  21. double GetPay() const { return pay;}
  22. char* GetName() const { return pName;}
  23. void Print() const;
  24. void SetBirthYear(const char*);
  25. void SetName(const char*);
  26. void SetPay(const char*);
  27. private:
  28. char* pName;
  29. int birth_year;
  30. double pay;
  31. };
  32. ////////////////////////
  33. Man::Man(int lName)
  34. {
  35. cout << "Constructor is working" << endl;
  36. pName = new char[lName + 1];
  37. }
  38. Man::~Man()
  39. {
  40. cout << "Destructor is woking" << endl;
  41. delete []pName;
  42. }
  43. void Man::SetName(const char* fromBuf)
  44. {
  45. strncpy(pName, fromBuf, l_name);
  46. pName[l_name] = 0;
  47. }
  48. void Man::SetBirthYear(const char* fromBuf)
  49. {
  50. birth_year = atoi(fromBuf + l_name);
  51. }
  52. void Man::SetPay(const char* fromBuf)
  53. {
  54. pay = atof(fromBuf + l_name + l_year);
  55. }
  56. bool Man::CompareName(const char* name) const
  57. {
  58. if ((strstr(pName, name)) && (pName[strlen(name)] == ' ' ))
  59. return true;
  60. else
  61. return false;
  62. }
  63. void Man::Print() const
  64. {
  65. cout << pName << birth_year << " " << pay << endl;
  66. }
  67.  
  68. int _tmain(int argc, _TCHAR* argv[])
  69. {
  70. setlocale(LC_ALL, "RUSSIAN");
  71. const int maxn_record = 10;
  72. Man man[maxn_record];
  73. char buf [l_buf + 1];
  74. char name [l_name + 1];
  75. ifstream fin("e:\\dbase.txt");
  76. if (!fin)
  77. {
  78. cout << "Нет файла " << filename << endl;
  79. return 1;
  80. }
  81. int i = 0;
  82. while (fin.getline(buf, l_buf))
  83. {
  84. if (i >= maxn_record)
  85. {
  86. cout << "Слишком длинный файл";
  87. return 1;
  88. }
  89. man[i].SetName(buf);
  90. man[i].SetBirthYear(buf);
  91. man[i].SetPay(buf);
  92. i++;
  93. }
  94. int n_record = 4, n_man = 0;
  95. double mean_pay = 0;
  96. while(true)
  97. {
  98. cout << "Введите фамилию или слово end:";
  99. cin >> name;
  100. if (0 == strcmp(name, "end")) break;
  101. bool not_found = true;
  102. for (int i = 0; i < n_record; ++i)
  103. {
  104. cout << man[i];
  105. if (man[i].CompareName(name))
  106. {
  107. man[i].Print();
  108. n_man++;
  109. mean_pay += man[i].GetPay();
  110. not_found = false;
  111. break;
  112. }
  113. }
  114. if (not_found)
  115. cout << "Такого сотрудника нет" << endl;
  116. }
  117. if (n_man)
  118. cout << "Средний оклад: " << mean_pay / n_man << endl;
  119. return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement