Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct _TBIRTHDAY{
  5. int year;
  6. int month;
  7. int day;
  8. } TBIRTHDAY;
  9.  
  10. typedef struct _TADDR{
  11. int postcode;
  12. char *country;
  13. char *region;
  14. char *district;
  15. char *city;
  16. char *street;
  17. char *house;
  18. int flat;
  19. } TADDR;
  20.  
  21. typedef struct _TSOL{
  22. char *surname;
  23. char *name;
  24. char *patronymic;
  25. TADDR address;
  26. char *nationality;
  27. TBIRTHDAY birthday;
  28. char *position;
  29. char *title;
  30. } TSOL, *PSOL;
  31.  
  32. char *GetString(){
  33. char *str = (char *)malloc(1);
  34. str[0] = 0;
  35. char tmp;
  36. fflush(stdin);
  37. scanf("%c", &tmp);
  38. int i = 0;
  39. while (tmp != '\n'){
  40. *(str + i++) = tmp;
  41. realloc(str, sizeof(*str) + sizeof(char));
  42. scanf("%c", &tmp);
  43. }
  44. return str;
  45. }
  46.  
  47. void PrintMenu(){
  48. printf("1. Ввод структуры\n");
  49. printf("2. Ввод структуры на основе другой структуры\n");
  50. printf("3. Просмотр\n");
  51. printf("4. Поиск\n");
  52. printf("5. Сортировка\n");
  53. printf("0. Меню\n");
  54. }
  55.  
  56. void AddStruct(PSOL *arr,TSOL sol, int *length){
  57. realloc(*arr, sizeof(**arr) + sizeof(TSOL));
  58. (*arr)[(*length)++] = sol;
  59. }
  60.  
  61. void PrintStruct(TSOL sol){
  62. printf("\tФИО: %s %s %s\n", sol.surname, sol.name, sol.patronymic);
  63. printf("\tАдрес: %i, %s, %s область, %s район, ул. %s, дом №%s, кв №%i\n", sol.address.postcode, sol.address.country, sol.address.region, sol.address.district,sol.address.street, sol.address.house, sol.address.flat);
  64. printf("\tНациональность: %s\n", sol.nationality);
  65. printf("\tДата рождения: %i.%i.%i\n", sol.birthday.day, sol.birthday.month, sol.birthday.year);
  66. printf("\tДолжность: %s\n", sol.position);
  67. printf("\tЗвание: %s\n", sol.title);
  68. }
  69.  
  70. void PrintAll(PSOL arr, int count){
  71. for (int i = 0; i < count; i++){
  72. printf("%i.\n", i + 1);
  73. PrintStruct(arr[i]);
  74. }
  75. };
  76.  
  77. char *GetSurname(){
  78. printf("Введите фамилию: ");
  79. return GetString();
  80. }
  81. char *GetName(){
  82. printf("Введите имя: ");
  83. return GetString();
  84. }
  85. char *GetPatronymic(){
  86. printf("Введите отчество: ");
  87. return GetString();
  88. };
  89. int GetPostcode(){
  90. int result;
  91. printf("Введите почтовый индекс: ");
  92. scanf("%i\n", &result);
  93. return result;
  94. };
  95. char *GetCountry(){
  96. printf("Введите страну: ");
  97. return GetString();
  98. };
  99. char *GetRegion(){
  100. printf("Введите область: ");
  101. return GetString();
  102. };
  103. char *GetDistrict(){
  104. printf("Введите район: ");
  105. return GetString();
  106. };
  107. char *GetCity(){
  108. printf("Введите город: ");
  109. return GetString();
  110. };
  111. char *GetStreet(){
  112. printf("Введите улицу: ");
  113. return GetString();
  114. };
  115. char *GetHouse(){
  116. printf("Введите номер дома: ");
  117. return GetString();
  118. };
  119. int GetFlat(){
  120. int result;
  121. printf("Введите номер квартиры: ");
  122. scanf("%i", &result);
  123. return result;
  124. };
  125. TADDR GetAddr(){
  126. TADDR result;
  127. result.postcode = GetPostcode();
  128. result.country = GetCountry();
  129. result.region = GetRegion();
  130. result.district = GetDistrict();
  131. result.city = GetCity();
  132. result.street = GetStreet();
  133. result.house = GetHouse();
  134. result.flat = GetFlat();
  135. return result;
  136. }
  137. char *GetNationality(){
  138. printf("Введите национальность: ");
  139. return GetString();
  140. }
  141. int GetDay(){
  142. int result;
  143. printf("Введите день рождения: ");
  144. scanf("%i", &result);
  145. return result;
  146. };
  147. int GetMonth(){
  148. int result;
  149. printf("Введите месяц рождения: ");
  150. scanf("%i", &result);
  151. return result;
  152. };
  153. int GetYear(){
  154. int result;
  155. printf("Введите год рождения: ");
  156. scanf("%i", &result);
  157. return result;
  158. };
  159. TBIRTHDAY GetBirthDay(){
  160. TBIRTHDAY result;
  161. result.day = GetDay();
  162. result.month = GetMonth();
  163. result.year = GetYear();
  164. return result;
  165. }
  166. char *GetPosition(){
  167. printf("Введите должность: ");
  168. return GetString();
  169. };
  170. char *GetTitle(){
  171. printf("Введите звание: ");
  172. return GetString();
  173. };
  174.  
  175. TSOL GetStruct(){
  176. TSOL result;
  177. result.surname = GetSurname();
  178. result.name = GetName();
  179. result.patronymic = GetPatronymic();
  180. result.address = GetAddr();
  181. result.nationality = GetNationality();
  182. result.birthday = GetBirthDay();
  183. result.position = GetPosition();
  184. result.title = GetTitle();
  185. return result;
  186. }
  187.  
  188. int main()
  189. {
  190. const TSOL sol= {"Иванова",
  191. "Ирина",
  192. "Анатольевна",
  193. {
  194. 222120,
  195. "Беларусь",
  196. "Минская",
  197. "Борисовский",
  198. "Борисов",
  199. "Трусова",
  200. "99",
  201. 1},
  202. "Украинка",
  203. {
  204. 1,
  205. 1,
  206. 2013},
  207. "Бухгалтер",
  208. "Майор"};
  209. PSOL bd = (PSOL)malloc(sizeof(TSOL));
  210. int count = 0;
  211. int state = 0;
  212. PrintMenu();
  213. while (state != 100){
  214. printf("Введите команду:\n");
  215. scanf("%i\n", &state);
  216. char tmp;
  217. scanf("%c", &tmp);
  218. scanf("%c", &tmp);
  219. scanf("%c", &tmp);
  220. scanf("%c", &tmp);
  221.  
  222. switch (state){
  223. case 0:{
  224. PrintMenu();
  225. break;
  226. }
  227. case 1:{
  228. AddStruct(&bd, GetStruct(), &count);
  229. break;
  230. }
  231. case 2:{
  232. break;
  233. }
  234. case 3:{
  235. PrintAll(bd, count);
  236. break;
  237. }
  238. case 4:{
  239. break;
  240. }
  241. case 5:{
  242. break;
  243. }
  244. default:
  245. break;
  246. }
  247. }
  248. return 0;
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement