Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.99 KB | None | 0 0
  1. // 3 семестр |1| Вариант №18
  2.  
  3. #include "pch.h"
  4. #include <iostream>
  5. #include <iomanip>
  6. #include <string>
  7. #include <Windows.h>
  8. #include <cstdlib>
  9. #include <fstream>
  10.  
  11. using namespace std;
  12.  
  13. const int N = 100, L = 31, M = 11;
  14.  
  15. struct Date {
  16. int d;
  17. int m;
  18. int y;
  19. };
  20.  
  21. struct student {
  22. char group[10];
  23. char name[20];
  24. Date dr;
  25. };
  26.  
  27. void inputMasStudFile(student z[], int &k) {
  28. int i; char iniz[5], file[L] = ""; k = 0;
  29.  
  30. ifstream fin;
  31.  
  32. cout << "Имя файла данных ";
  33. cin >> file;
  34.  
  35. fin.open(file);
  36. if (fin.fail()) {
  37. cout << file << " не открыт для чтения \n";
  38. system("PAUSE"); return;
  39. }
  40. while (1) {
  41. fin >> z[k].name >> iniz >> z[k].group >> z[k].dr.d >> z[k].dr.m >> z[k].dr.y;
  42. if (fin.fail()) break;
  43. strcat_s(z[k].name, " ");
  44. strcat_s(z[k].name, iniz);
  45. k++;
  46. }
  47. fin.close();
  48. cout << "Данные введены из файла\n";
  49. system("PAUSE");
  50. }
  51.  
  52. void outputMasStud(student z[], int &k) {
  53. int i;
  54.  
  55. cout << " _________________________________________________________________________\n";
  56. cout << " | | | | Дата рождения |\n";
  57. cout << " | № | Фамилия и инициалы | Группа |____________________|\n";
  58. cout << " | | | | день | мес. | год |\n";
  59. cout << " |_______________________________________________________________________|\n";
  60. for (i = 0; i < k; i++)
  61. cout << " | " << setw(2) << i + 1 << " | " << setw(30) << z[i].name << " | " << setw(10) << z[i].group << " | "
  62. << setw(3) << z[i].dr.d << " | " << setw(3) << z[i].dr.m << " | " << setw(4) << z[i].dr.y << " | \n";
  63. cout << "_________________________________________________________________________\n";
  64.  
  65. system("PAUSE");
  66. }
  67.  
  68. void outputMasStudFile(student z[], int &k) {
  69. int i; char file[L];
  70.  
  71. ofstream fout;
  72. cout << "Имя выходного файла ";
  73. cin >> file;
  74.  
  75. fout.open(file);
  76. if (fout.fail()) {
  77. cout << file << " не открыт для записи \n"; return;
  78. }
  79.  
  80. fout << " _________________________________________________________________________\n";
  81. fout << " | | | | Дата рождения |\n";
  82. fout << " | № | Фамилия и инициалы | Группа |____________________|\n";
  83. fout << " | | | | день | мес. | год |\n";
  84. fout << " |_______________________________________________________________________|\n";
  85. for (i = 0; i < k; i++)
  86. fout << " | " << setw(2) << i + 1 << " | " << setw(30) << z[i].name << " | " << setw(10) << z[i].group << " | "
  87. << setw(4) << z[i].dr.d << " | " << setw(3) << z[i].dr.m << " | " << setw(4) << z[i].dr.y << " | \n";
  88. fout << "__________________________________________________________________________\n";
  89.  
  90.  
  91. fout.close();
  92. cout << "Данные записаны в файл\n";
  93. system("PAUSE");
  94. }
  95.  
  96. void addStudent(student z[], int &k) {
  97. student t;
  98. char iniz[5];
  99. if (k == N) {
  100. cout << "Места нет\n";
  101. system("PAUSE");
  102. return;
  103. }
  104. else {
  105. cout << "Введите фамилию студента: "; cin >> z[k].name;
  106. cout << "инициалы: "; cin >> iniz;
  107. strcat_s(z[k].name, " ");
  108. strcat_s(z[k].name, iniz);
  109. cout << "группу: "; cin >> z[k].group;
  110. cout << "день рождения: "; cin >> z[k].dr.d;
  111. cout << "месяц: "; cin >> z[k].dr.m;
  112. cout << "год: "; cin >> z[k].dr.y;
  113. k++;
  114. } cout << "Запись добавлена\n";
  115. system("PAUSE");
  116. }
  117.  
  118. void deleteStudent(student z[], int &k) {
  119. int i, j;
  120. char ch;
  121. outputMasStud(z, k);
  122. cout << "Номер строки: "; cin >> j;
  123. j--;
  124. if (j < 0 || j >= k) {
  125. cout << "Нет такой строки\n";
  126. system("PAUSE"); return;
  127. }
  128. else cout << j + 1 << "-я строка: " << z[j].name << ' '
  129. << z[j].group << ' ' << z[j].dr.d
  130. << ' ' << z[j].dr.m << ' ' << z[j].dr.y << endl;
  131. cout << "Удалить (y/n) ? "; cin >> ch;
  132. if (ch == 'n') return;
  133. if (ch != 'y') {
  134. cout << "Не понятно \n";
  135. system("PAUSE"); return;
  136. }
  137. for (i = j + 1; i < k; i++) {
  138. z[i - 1] = z[i];
  139. } k--;
  140. cout << "Запись удалена\n";
  141. system("PAUSE");
  142. }
  143.  
  144. void search(student z[], int k, student u[], int &l)
  145. {
  146. l = 0;
  147. int i, j;
  148. cout << "Введите день k = "; cin >> j;
  149. if (j < 1 || j > 31) {
  150. cout << "День введен неверно\n";
  151. system("PAUSE"); return;
  152. }
  153.  
  154. for (i = 0; i < k; i++)
  155. if (z[i].dr.d == j) {
  156. u[l] = z[i];
  157. l++;
  158. }
  159. if (l == 0) {
  160. cout << "Рожденных " << j << "-ого числа в списке нет\n";
  161. system("PAUSE"); return;
  162. }
  163.  
  164. student t = u[0];
  165. for (i = 1; i < l; i++) {
  166. if (u[i].dr.m < t.dr.m) t = u[i];
  167. }
  168. cout << "Самый молодой студент, родившийся " << j << "-ого числа: \n";
  169. cout << t.name << ' ' << t.group << ' '
  170. << t.dr.d << '.' << t.dr.m << '.' << t.dr.y << "\n";
  171. system("PAUSE");
  172. }
  173.  
  174. void sortDay(student z[], int k) {
  175. int fl, i;
  176. student t;
  177. do {
  178. fl = 0; k--;
  179. for (i = 0; i < k; i++)
  180. if (z[i].dr.d > z[i + 1].dr.d) {
  181. t = z[i];
  182. z[i] = z[i + 1];
  183. z[i + 1] = t;
  184. fl = 1;
  185. }
  186. } while (fl);
  187.  
  188. }
  189.  
  190. void sortDate(student z[], int k) {
  191. int fl, i, j;
  192. student t;
  193.  
  194. for (i = k - 1; i > 0; i--)
  195. for (j = 0; j < i; j++) {
  196. if (z[j].dr.y > z[j + 1].dr.y) {
  197. t = z[j];
  198. z[j] = z[j + 1];
  199. z[j + 1] = t;
  200. }
  201. else if (z[j].dr.y == z[j + 1].dr.y) {
  202. if (z[j].dr.m > z[j + 1].dr.m) {
  203. t = z[j];
  204. z[j] = z[j + 1];
  205. z[j + 1] = t;
  206. }
  207. }
  208. else if (z[j].dr.m == z[j + 1].dr.m) {
  209. if (z[j].dr.d > z[j + 1].dr.d) {
  210. t = z[j];
  211. z[j] = z[j + 1];
  212. z[j + 1] = t;
  213. }
  214. }
  215. }
  216. }
  217.  
  218. void sortName(student z[], int k) {
  219.  
  220. int fl, i;
  221. student t;
  222.  
  223. do {
  224. fl = 0; k--;
  225. for (i = 0; i < k; i++) {
  226. if (strcmp(z[i].name, z[i + 1].name) > 0) {
  227. t = z[i];
  228. z[i] = z[i + 1];
  229. z[i + 1] = t;
  230. fl = 1;
  231. }
  232. }
  233. } while (fl);
  234. }
  235.  
  236.  
  237. void main() {
  238. SetConsoleCP(1251);
  239. SetConsoleOutputCP(1251);
  240.  
  241. int n, m, l, i, j;
  242. student a[N], b[N];
  243.  
  244. while (1) {
  245. system("cls");
  246. cout << "1. Ввод данных из файла\n";
  247. cout << "2. Вывод исходных данных на экран\n";
  248. cout << "3. Добавить студента\n";
  249. cout << "4. Удалить студента\n";
  250. cout << "5. Найти всех студентов родившихся k-ого числа\n";
  251. cout << "6. Сортировка исходного массива структур по дате рождения в порядке убывания возраста\n";
  252. cout << "7. Сортировка исходного массива структур по дню рождения в порядке возрастания\n";
  253. cout << "8. Сортировка выходного массива структур по фамилии и инициалам студента в алфавитном порядке\n";
  254. cout << "9. Вывод выходного массива структур на экран\n";
  255. cout << "10. Вывод выходного массива структур в файл\n";
  256. cout << "11. Вывод исходных данных в файл\n";
  257. cout << "12. Выход\n";
  258. cout << "Ваш выбор (1-12): "; cin >> j;
  259.  
  260. switch (j) {
  261. case 1: inputMasStudFile(a, n); break;
  262. case 2: outputMasStud(a, n); break;
  263. case 3: addStudent(a, n); break;
  264. case 4: deleteStudent(a, n); break;
  265. case 5: search(a, n, b, l); break;
  266. case 6: sortDate(a, n); break;
  267. case 7: sortDay(a, n); break;
  268. case 8: sortName(b, l); break;
  269. case 9: outputMasStud(b, l); break;
  270. case 10: outputMasStudFile(b, l); break;
  271. case 11: outputMasStudFile(a, n); break;
  272. case 12: cout << "Конец\n"; return; break;
  273. default: cout << "Нет такого варианта\n"; system("PAUSE");
  274.  
  275. }
  276. }
  277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement