Advertisement
Guest User

kiro

a guest
Feb 27th, 2020
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. #include<string>
  4. const string bgS = "абвгдежзийклмнопрстуфхцчшщьъюя"
  5. "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЮЯ";
  6. bool validName(string str) {
  7. if (str.length() == 0
  8. || string::npos == bgS.find(str.front(), 1)
  9. || string::npos == bgS.find(str.back(), 1))
  10. return false;
  11. return string::npos == str.find_first_not_of(bgS);
  12. }
  13. struct TFamWage {
  14. string fam;
  15. double minW, maxW;
  16. };
  17. struct TS {
  18. string name;
  19. double wage;
  20. };
  21. void readStruct(TS & s) {
  22. do {
  23. cout << " zaplata: ";
  24. cin >> s.wage;
  25. } while (s.wage <= 0.0);
  26. getline(cin, s.name);
  27. do {
  28. cout << " imena (bylg. b. i intervali): ";
  29. getline(cin, s.name);
  30. } while (! validName(s.name) );
  31. }
  32. void writeStruct(TS * p) {
  33. cout << " " << p->name
  34. << " sys zaplata " << p->wage << endl;
  35. }
  36. void readArray(TS a[], int L) {
  37. cout << "Vyvedete danni za " << L << " slujitelq:\n";
  38. for (int i = 0; i < L; ++i) {
  39. cout << " " << i + 1 << "-i slujitel:\n";
  40. readStruct(a[i]);
  41. }
  42. }
  43. void writeArray(TS a[], int L) {
  44. cout << "Slujiteli:\n";
  45. for (int i = 0; i < L; ++i) writeStruct(&a[i]);
  46. }
  47. void sortWage(TS a[], int L) {
  48. for (int pos = L - 1; 0 < pos; --pos) {
  49. int iMin = pos;
  50. for (int i = 0; i < pos; ++i)
  51. if (a[i].wage < a[iMin].wage) iMin = i;
  52. TS temp = a[iMin];
  53. a[iMin] = a[pos];
  54. a[pos] = temp;
  55. }
  56. }
  57. void viewFamWage(TS a[], int L, string fw[], int & famNum) {
  58. famNum = 0;
  59. for (int i = 0; i < L; ++i) {
  60. size_t LastSpace = a[i].name.rfind(' ');
  61. if (LastSpace == string::npos)
  62. fw[famNum] = a[i].name;
  63. else fw[famNum] = a[i].name.substr(LastSpace + 1);
  64. int first = 0;
  65. while (fw[first] != fw[famNum])++first;
  66. if (first == famNum) {
  67. fw[famNum].minW = fw[famNum].maxW = a[i].wage;
  68. fw[famNum].num = 1;
  69. ++famNum;
  70. }
  71. }
  72. else {
  73. ++fw[famNum].num;
  74. if (fw[first].minW > a[i].wage) fw[first].minW = a[i].wage;
  75. else if (fw[first].maxW < a[i].wage) fw[first].maxW = a[i].wage;
  76. }
  77. }
  78. for (int i = 0; i < famNum; ++i) {
  79. cout << fw[i].fam << "se sreshta " << fw[i].num
  80. << " put(-i);\n minimalna zaplata: "fw[i].minW
  81. << "maksimalna zaplata " << fw[i].maxW << endl;
  82.  
  83. }
  84. int main() {
  85. system("chcp 1251");
  86. const int number = 4;
  87. TS ar[number];
  88. readArray(ar, number);
  89. sortWage(ar, number);
  90. writeArray(ar, number);
  91.  
  92. TFamWage famW[number];
  93. string fam[number];
  94. int famNum;
  95. viewFamWage(ar, number,fam , famNum);
  96.  
  97.  
  98. system("pause");
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement