Advertisement
Guest User

Untitled

a guest
Feb 19th, 2018
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.55 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<conio.h>
  4. #include<string.h>
  5. #include<locale.h>
  6. #define INPUT_FILMS 1
  7. #define OUTPUT_FILMS 2
  8. #define FIND_ACTORS 3
  9. #define EXIT 4
  10.  
  11. #define COMEDY 1
  12. #define HORROR 2
  13. #define THRILLER 3
  14. #define MELODRAMA 4
  15.  
  16. //меню
  17. int menu() {
  18. printf("Меню:\n");
  19. printf("1. Ввести инофрмацию о фильмах.\n");
  20. printf("2. Вывести информацию о фильмах.\n");
  21. printf("3. Найти фильм с наибольшим числом актеров.\n");
  22. printf("4. Выход.\n");
  23. printf("Выберите дальнейшее действие: ");
  24. return 0;
  25. }
  26. // выделение памяти под массивы
  27. int allocate_mamory(int n, char*** names, int** year, int**types, char****actors, int**how_actors) {
  28. *names = new char*[n];
  29. for (int i = 0; i < n; i++)
  30. (*names)[i] = new char[100];
  31. *year = new int[n];
  32. *types = new int[n];
  33. *how_actors = new int[n];
  34. *actors = new char**[n];
  35. return 0;
  36. }
  37. //освобождение памяти
  38. int free_memory(int n, char*** names, int** year, int**types, char****actors, int**how_actors) {
  39. delete[] * year;
  40. *year = NULL;
  41. delete[] * types;
  42. *types = NULL;
  43. delete[] * how_actors;
  44. *how_actors = NULL;
  45.  
  46. for (int i = 0; i < n; i++) {
  47. delete[](*names)[i];
  48.  
  49. //из под имен актеров
  50. for (int j = 0; j < (*how_actors)[i]; j++) {
  51. delete[](*actors)[i][j];
  52. }
  53. delete[](*actors)[i];
  54. delete[](*actors);
  55.  
  56. }
  57. delete[] * names;
  58. *names = NULL;
  59. *actors = NULL;
  60. return 0;
  61. }
  62. //вводим массив фильмов
  63. int imput_films(int* n, char*** names, int** year, int** types, char****actors, int**how_actors) {
  64. //проверка , введен ли массив:
  65. if (*n != 0)
  66. return -1;
  67. printf("\nВведите количество фильмов\n");
  68. scanf_s("%i", n);
  69. //выделим память
  70. allocate_mamory(*n, names, year, types, actors, how_actors);
  71. //вводим массив фильмов:
  72.  
  73. char films_type_2 [100];
  74. for (int i = 0; i < *n; i++) {
  75. printf("\nФильм №: %i \n", (i+1));
  76. printf("\nВведите название фильма\n");
  77. scanf_s ("%s ",(*names)[i]);
  78. printf("\nВведите тип фильма: комедия, ужасы, боевик или мелодрама\n");
  79. scanf_s("%s ", films_type_2);
  80. if (strcmp(films_type_2, "комедия"))
  81. (*types)[i] = COMEDY;
  82. if (strcmp(films_type_2, "ужасы"))
  83. (*types)[i] = HORROR;
  84. if (strcmp(films_type_2, "боевик"))
  85. (*types)[i] = THRILLER;
  86. if (strcmp(films_type_2, "мелодрама"))
  87. (*types)[i] = MELODRAMA;
  88. printf("\nвведите дату выпуска фильма\n");
  89. scanf_s("%i", &(*year)[i]);
  90. printf("\nвведите количество актеров в фильме № %i\n", i);
  91. scanf_s("%i", &(*how_actors)[i]);
  92. //выделим память на массив имен актеров
  93. (*actors)[i] = new char*[((*how_actors)[i])];
  94. printf("\nвведите имена актеров в фильме № %i\n", i);
  95. int j;
  96. for (j = 0; j < (*how_actors)[i]; j++) {
  97. (*actors)[i][j] = new char[100];
  98. printf("Актер № %i", j);
  99. scanf_s("%s", (*actors)[i][j]);
  100. }
  101. }
  102. return 0;
  103. }
  104. //функция вывода массива фильмов
  105. int output_films(int n, char** names, int* year, int*types, char***actors, int*how_actors){
  106. //проверка
  107. if (n == 0)
  108. return -1;
  109. //выводим массив
  110. for(int i=0; i<n;i++){
  111. printf("\n фильм № %i:\n", i);
  112. printf("Название: %s\n", names[i]);
  113. if (types[i] == COMEDY);
  114. printf("Тип: комедия \n");
  115. if( types[i] == HORROR);
  116. printf("Тип: ужасы\n");
  117. if (types[i] == THRILLER);
  118. printf("Тип: боевик\n");
  119. if (types[i] == MELODRAMA);
  120. printf("Тип: мелодрама\n");
  121.  
  122. printf("Год: %i\n", year[i]);
  123. int j = 0;
  124. printf("Актеры: ");
  125. for (j = 0; j < how_actors[i]; j++)
  126. printf("%lf ", actors[i][j]);
  127. printf("\n");
  128. }
  129. return 0;
  130. }
  131.  
  132. //функция поиска фильма, в котором снялось наибольшее количество актеров
  133. int find_actors(int n, int* how_actors) {
  134. //проверка
  135. if (n == 0)
  136. return -1;
  137. int i;
  138. int max = 0;
  139. for (i = 0; i < n; i++) {
  140. if (how_actors[i] > max) {
  141. max = how_actors[i];
  142. }
  143. }
  144. return max;
  145.  
  146. }
  147. int main() {
  148. setlocale(LC_ALL, "rus");
  149. // названия фильмов
  150. char** names = NULL;
  151. // дата выпуска
  152. int* year = NULL;
  153. // типы фильмов
  154. int* types = NULL;
  155. //имена актеров
  156. char*** actors = NULL;
  157. // количество актеров в каждом фильме
  158. int* how_actors = NULL;
  159. int n = 0;
  160. int menu1 = 0;
  161. while (1) {
  162. menu();
  163. scanf_s("%i", &menu1);
  164. if (menu1 == INPUT_FILMS) {
  165. if (imput_films(&n, &names, &year, &types, &actors, &how_actors) == -1)
  166. printf("массив уже введен");
  167. }
  168. if (menu1 == OUTPUT_FILMS) {
  169. if (output_films(n, names, year, types, actors, how_actors) == -1)
  170. printf("Массив ещё не введён\n");
  171. }
  172. if (menu1 == FIND_ACTORS) {
  173. int a = find_actors(n, how_actors);
  174. if (a == -1)
  175. printf("Массив ещё не введён\n");
  176. else
  177. printf("Фильм с наибольшим числом актеров № %i\n", a);
  178. }
  179.  
  180. if (menu1 == EXIT) {
  181. free_memory(n, &names, &year, &types, &actors, &how_actors);
  182. return 1;
  183. }
  184. }
  185. return 0;
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement