Advertisement
Guest User

Untitled

a guest
Nov 24th, 2014
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.60 KB | None | 0 0
  1. #include <QtCore/QCoreApplication>
  2. #include <iostream>
  3. #include <iomanip>
  4. #include <windows.h>
  5. #include <cstdio>
  6.  
  7. using namespace std;
  8.  
  9. struct gr
  10. {
  11. char name[4];
  12. char number[4];
  13. };
  14.  
  15. struct stud
  16. {
  17. gr group;
  18. char starosta[20];
  19. int contract;
  20. int budget;
  21. }x;
  22.  
  23. stud mas[100]=
  24. {
  25. {"KИ-","141","Гриц Настя",7,20},
  26. {"EM-","132","Ковтун Михаил",4,15},
  27. {"BT-","101","Дрозд Марина",1,20},
  28. {"КИ-","143","Косовец Вика",3,17},
  29. {"ПИ-","121","Васнецова Саша",3,18}
  30. };
  31. int size=5;
  32.  
  33. void variant (int);
  34. void show_mas ();
  35. void add_new ();
  36. bool cmp(int, int);
  37. int cmp1(stud s1, stud s2);
  38. void sort_group();
  39. void sort_stud ();
  40. void sort_budget ();
  41. void student_group();
  42. void suma_students();
  43.  
  44. int main(int argc, char *argv[])
  45. {
  46. QCoreApplication a(argc, argv);
  47. system ("Color F0");
  48. int var;
  49. while (true)
  50. {
  51. system ("cls");
  52. SetConsoleTitleA("МЕНЮ");
  53. cout<<"Варианты работы программы:"<<endl;
  54. cout<<"1. Показать массив структур."<<endl
  55. <<"2. Добавить запись в массив структур."<<endl
  56. <<"3. Сортировать массив по группам."<<endl
  57. <<"4. Сортировать массив по количеству студентов"
  58. <<" + количество бюджетников."<<endl
  59. <<"5. Список групп с подсчетом количества студентов"<<endl
  60. <<"6. Подсчет общего количества бюджетноков и контрактников."<<endl<<endl
  61. <<"Ваш выбор: ";
  62. cin>>var;
  63. variant(var);
  64. };
  65. return a.exec();
  66. }
  67.  
  68. void variant (int var)
  69. {
  70. switch (var)
  71. {
  72. case 1: show_mas(); break;
  73. case 2: add_new();
  74. show_mas(); break;
  75. case 3: sort_group();
  76. show_mas(); break;
  77. case 4: sort_stud();
  78. sort_budget();
  79. show_mas(); break;
  80. case 5: sort_group;
  81. student_group(); break;
  82. case 6: suma_students(); break;
  83. }
  84. }
  85.  
  86. void show_mas ()
  87. {
  88. system ("cls");
  89. SetConsoleTitleA ("Структура данных");
  90. cout<<"Наш массив: "<<endl<<endl;
  91. for (int i=0; i<size; i++)
  92. {
  93. cout<<setw(14)<<mas[i].group.name<<mas[i].group.number
  94. <<setw(20)<<mas[i].starosta
  95. <<setw(10)<<mas[i].budget
  96. <<setw(10)<<mas[i].contract<<endl;
  97. }
  98. cout<<endl<<endl;
  99. system("pause");
  100. }
  101.  
  102. void add_new ()
  103. {
  104. system ("cls");
  105. SetConsoleTitleA ("Добавление в структуру данных");
  106. size++;
  107. cout<<"Введите имя группы с тире: ";
  108. gets(mas[size-1].group.name);
  109. gets(mas[size-1].group.name);
  110. cout<<"Введите номер группы: ";
  111. gets(mas[size-1].group.number);
  112. cout<<"Введите фамилию и имя старосты группы: ";
  113. gets(mas[size-1].starosta);
  114. cout<<"Введите количество бюджетников: ";
  115. cin>>mas[size-1].budget;
  116. cout<<"Введите количество контрактников: ";
  117. cin>>mas[size-1].contract;
  118. system("pause");
  119. }
  120.  
  121.  
  122.  
  123. bool cmp ( int s1, int s2)
  124. {
  125. if(s1<s2 || s1==s2) return true;
  126. return false;
  127. }
  128.  
  129. int cmp1(stud s1, stud s2)
  130. {
  131. if(strcmp(s1.group.name,s2.group.name)!=0)
  132. return strcmp(s1.group.name,s2.group.name);
  133. return (strcmp(s1.group.number,s2.group.number));
  134.  
  135. }
  136.  
  137. void sort_group ()
  138. {
  139. int last=size;
  140. bool ok;
  141. do {
  142. last=last-1;
  143. ok=true;
  144. for (int i=0; i<last; i++)
  145. {
  146. if (cmp1(mas[i],mas[i+1])>0)
  147. {
  148. x=mas[i];
  149. mas[i]=mas[i+1];
  150. mas[i+1]=x;
  151. ok=false;
  152. }
  153. }
  154. } while (!ok);
  155. system("pause");
  156. }
  157.  
  158. void sort_stud()
  159. {
  160. int suma1=0, suma2=0;
  161. for (int i=0; i<size-1; i++)
  162. {
  163. for(int j=i+1; j<size;j++)
  164. {
  165. suma1=mas[i].budget+mas[i].contract;
  166. suma2=mas[j].budget+mas[j].contract;
  167. if (cmp(suma1,suma2))
  168. {
  169. x=mas[i];
  170. mas[i]=mas[j];
  171. mas[j]=x;
  172. }
  173. }
  174. }
  175. system("pause");
  176. }
  177.  
  178. void sort_budget ()
  179. {
  180. int suma1=0, suma2=0;
  181. for (int i=0; i<size-1; i++)
  182. {
  183. for (int j=i+1; j<size; j++)
  184. {
  185. suma1=mas[i].budget+mas[i].contract;
  186. suma2=mas[j].budget+mas[j].contract;
  187. if (mas[i].budget<mas[j].budget && suma1==suma2)
  188. {
  189. x=mas[i];
  190. mas[i]=mas[j];
  191. mas[j]=x;
  192. }
  193. }
  194. }
  195. }
  196.  
  197. void student_group ()
  198. {
  199. system ("cls");
  200. SetConsoleTitleA ("Группа + количество студентов");
  201. int suma;
  202. for (int i=0; i<size; i++)
  203. {
  204. suma=mas[i].budget+mas[i].contract;
  205. cout<<mas[i].group.name<<mas[i].group.number<<setw(15)<<suma<<endl;
  206. }
  207. system("pause");
  208. }
  209.  
  210. void suma_students ()
  211. {
  212. system ("cls");
  213. SetConsoleTitleA ("Общее количество студентов");
  214. int suma_b=0, suma_c=0;
  215. for (int i=0; i<size; i++)
  216. {
  217. suma_b+=mas[i].budget;
  218. suma_c+=mas[i].contract;
  219. }
  220. cout<<"Всего бюджетников: "<<suma_b<<endl;
  221. cout<<"Всего контрактников: "<<suma_c<<endl;
  222. system("pause");
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement