Advertisement
Guest User

Untitled

a guest
May 22nd, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.47 KB | None | 0 0
  1. #include "iostream"
  2. #include "fstream"
  3. #include "string.h"
  4. using namespace std;
  5.  
  6. struct informacia//структура, содержащая данные сотрудника
  7. {
  8. char familya_inicialy[20];
  9. int year;
  10. int oklad;
  11. int stag;
  12. };
  13.  
  14. int Kolichestvo_sotrudnikov(int&n)//вычисляет количество сотрудников из текстового файла для создания массива структур
  15. {
  16. char a[50];
  17. ifstream file;
  18. file.open("C:\\Games\\file1.txt", ios::in);//открываем файл
  19. if (file)
  20. {
  21. while (!file.eof())
  22. {
  23. file >> a;
  24. n++;
  25. }
  26. }
  27. else cout << " Ошибка! Файл не найден " << endl;
  28. file.close();
  29. n = n / 4;
  30. return n;
  31. }
  32.  
  33. void chtenie_iz_faila(informacia *sotrudnik, int&n)//считывание из текстового файла и присваивание данных переменным элементов структур
  34. {
  35. ifstream file;
  36. file.open("C:\\Games\\file1.txt", ios::in);
  37. if (file)
  38. {
  39. for (int i = 0; i < n; i++)
  40. {
  41. file >> sotrudnik[i].familya_inicialy;
  42. file >> sotrudnik[i].year;
  43. file >> sotrudnik[i].oklad;
  44. file >> sotrudnik[i].stag;
  45. }
  46. }
  47. else cout << " Ошибка! Файл не найден " << endl;
  48. file.close();
  49. }
  50.  
  51. void function1(informacia *sotrudnik, int &n)//функция для выполнения первого подпункта задачи(информация о конкретном сотруднике)
  52. {
  53. int nomer;
  54. cout << "\n\nВведите порядковый номер сотрудника: ";
  55. cin >> nomer;
  56. if ((nomer > n) || (nomer < 1))
  57. {
  58. cout << "Ошибка ввода данных" << endl;
  59. }
  60. else
  61. {
  62. cout << "Информация о выбранном сотруднике" << endl;
  63. cout << "Фамилия и инициалы: " << sotrudnik[nomer - 1].familya_inicialy << ", Год рождения: " << sotrudnik[nomer - 1].year << ", Оклад: " << sotrudnik[nomer - 1].oklad << ", Стаж: " << sotrudnik[nomer - 1].stag << endl;
  64. }
  65. }
  66.  
  67. void new_massive(informacia *sotrudnik, informacia *sotrudnik2, int &n)
  68. {
  69. for (int i = 0; i < n; i++)
  70. {
  71. strcpy_s(sotrudnik2[i].familya_inicialy, sotrudnik[i].familya_inicialy);
  72. sotrudnik2[i].year = sotrudnik[i].year;
  73. sotrudnik2[i].oklad = sotrudnik[i].oklad;
  74. sotrudnik2[i].stag = sotrudnik[i].stag;
  75. }
  76. }
  77.  
  78. void function2(informacia *sotrudnik, informacia *sotrudnik2, int &n)//функция для выполнения второго подпункта задачи(список сотрудников пенсионного возраста в алфавитном порядке)
  79. {
  80. new_massive(sotrudnik, sotrudnik2, n);
  81. int j;
  82. informacia t;
  83. for (int i = 0; i < n; i++)
  84. {
  85. t = sotrudnik2[i];
  86. j = i - 1;
  87.  
  88. while ((j >= 0) && (strcmp(sotrudnik2[j].familya_inicialy, t.familya_inicialy) == 1))
  89. {
  90. sotrudnik2[j + 1] = sotrudnik2[j]; j--;
  91. }
  92. sotrudnik2[j + 1] = t;
  93. }
  94. cout << "\n\nСписок работников пенсионного возраста по алфавиту" << endl;
  95. cout << "| Фамилия и инициалы | Год рождения | Оклад | Стаж |" << endl;
  96. cout << "_______________________________________________________" << endl;
  97. for (int i = 0; i < n; i++)
  98. {
  99. if (sotrudnik2[i].year < 1955)
  100. cout << "| " << sotrudnik2[i].familya_inicialy << " | " << sotrudnik2[i].year << " | " << sotrudnik2[i].oklad << " | " << sotrudnik2[i].stag << " |" << endl;
  101. }
  102. cout << "_______________________________________________________" << endl;
  103. }
  104.  
  105. void function3(informacia *sotrudnik, int &n)//функция для вычисления среднего оклада всех сотрудников
  106. {
  107. int summa = 0;
  108. for (int i = 0; i < n; i++)
  109. {
  110. summa += sotrudnik[i].oklad;
  111. }
  112. cout << "\n\nСредний оклад среди сотрудников: " << summa / n << endl;
  113. }
  114.  
  115. void deistvie(informacia *sotrudnik, informacia *sotrudnik2, int &n)//функция-меню
  116. {
  117. char t;
  118. int f;
  119. cout << "Нажмите 'у' чтобы начать: ";
  120. cin >> t;
  121. cout << "\n действия(1 - информация о сотруднике, 2 - список сотрудников в алфавитном порядке, 3 - средний оклад) ";
  122. while (t = 'y')
  123. {
  124. cout << "\nВыберите действие: ";
  125. cin >> f;
  126. switch (f)
  127. {
  128. case 1: function1(sotrudnik, n); break;
  129. case 2: function2(sotrudnik, sotrudnik2, n); break;
  130. case 3: function3(sotrudnik, n); break;
  131. default: cout << "Ошибка данных" << endl;
  132. }
  133. cout << "\nПродолжить?\n(Нажмите <y> чтобы продолжить(менять раскладку на англ язык), в противном случае любую другую кнопку): ";
  134. cin >> t;
  135. if (t != 'y')
  136. break;
  137. }
  138. }
  139.  
  140. int _tmain(int argc, _TCHAR* argv[])
  141. {
  142. setlocale(LC_ALL, "Russian");
  143. int kolichestvo = 0;
  144. Kolichestvo_sotrudnikov(kolichestvo);
  145. cout << "В файле содержалась информация о " << kolichestvo << " сотрудниках" << endl;
  146. informacia *sotrudnik = new informacia[kolichestvo];//создаем массив структур, содержащих информацию о сотрудниках отдела
  147. informacia *sotrudnik2 = new informacia[kolichestvo];
  148. chtenie_iz_faila(sotrudnik, kolichestvo);
  149. deistvie(sotrudnik, sotrudnik2, kolichestvo);
  150. system("pause");
  151. return 0;
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement