35657

Untitled

May 20th, 2023
853
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.91 KB | None | 0 0
  1.  
  2.  
  3. #define _CRT_SECURE_NO_WARNINGS
  4.  
  5. #include <iostream>
  6. #include <clocale>
  7. #include <string.h>
  8. using namespace std;
  9.  
  10. struct film {
  11.     char film_name[100]{};
  12.     char director[30]{};
  13.     char genre[10]{};
  14.     int rating = 0;
  15.  
  16. };
  17.  
  18. struct video_store {
  19.     film store[100]{};
  20.     int films_number = 0;
  21.     int max_film_number = 100;
  22. };
  23.  
  24. void AddFilm(video_store& my_store, const char film_name[], const char director[], const char genre[], const int rating) {
  25.     if (my_store.films_number == 100) {
  26.         cout << "Фильм не может быть добавлен" << endl;
  27.         return;
  28.     }
  29.     strcpy(my_store.store[my_store.films_number].film_name, film_name);
  30.     strcpy(my_store.store[my_store.films_number].director, director);
  31.     strcpy(my_store.store[my_store.films_number].genre, genre);
  32.     my_store.store[my_store.films_number].rating = rating;
  33.     my_store.films_number++;
  34. };
  35.  
  36. void ShowAllFilms(video_store& my_store) {
  37.     cout << "Все фильмы магазина" << endl;
  38.     for (int i = 0; i < my_store.films_number; i++) {
  39.         cout << '\"' << my_store.store[i].film_name << "\",director: " << my_store.store[i].director << ",genre: " << my_store.store[i].genre << ",rating: " << my_store.store[i].rating << endl;
  40.     }
  41.     cout << endl;
  42. };
  43.  
  44. void DelFilm(video_store& my_store) {
  45.     char name_u[100]{};
  46.     cout << "Введите название фильма для удаления" << endl;
  47.     cin >> name_u;
  48.     for (int i = 0; i < my_store.films_number; i++) {
  49.         if (!strcmp(my_store.store[i].film_name, name_u)) {
  50.             //delete my_store.store[i].film_name; // у вас массив на стеке, у вас нет указателей, просто уберите эту строку (и ниже тоже)
  51.             for (int j = i; j < my_store.films_number - 1; j++) {
  52.                 my_store.store[j] = my_store.store[j + 1];
  53.             }
  54.             //my_store[films_number - 1] = nullptr; // у вас массив на стеке, у вас нет указателей
  55.             my_store.films_number--;
  56.         }
  57.  
  58.     }
  59. };
  60.  
  61. void DelFilm(video_store& my_store, const char film_name[]) {
  62.     for (int i = 0; i < my_store.films_number; i++) {
  63.         if (!strcmp(my_store.store[i].film_name, film_name)) {
  64.             //delete(my_store.store[i].film_name); // у вас массив на стеке, у вас нет указателей
  65.             for (int j = i; j < my_store.films_number - 1; j++) {
  66.                 my_store.store[j + 1] = my_store.store[j];
  67.  
  68.             }
  69.             //my_store.films_number - 1 = nullptr;  // у вас массив на стеке, у вас нет указателей
  70.             my_store.films_number--;
  71.         }
  72.  
  73.     }
  74.  
  75. };
  76.  
  77. void FindFilmName(video_store& my_store, const char film_name[]) {
  78.     cout << "По вашему запросу найдено: " << endl;
  79.     for (int i = 0; i < my_store.films_number; i++) {
  80.         if (!strcmp(my_store.store[i].film_name, film_name)) {
  81.             cout << '\"' << my_store.store[i].film_name << " " << "\", director: " << my_store.store[i].director << ", genre: " << my_store.store[i].genre << ", rating: " << my_store.store[i].rating << endl;
  82.  
  83.         }
  84.     }
  85.  
  86.     cout << endl;
  87. };
  88.  
  89.  
  90. void FindFilmDirector(video_store& my_store, const char director[]) {
  91.     cout << "По вашему запросу найдено" << endl;
  92.     for (int i = 0; i = my_store.films_number; i++) { // обратите внимание на знак в условии окончания цикла, вы запустили бесконечный цикл, программа будет выполнять его без конца
  93.         if (!strcmp(my_store.store[i].director, director)) {
  94.             cout << '\"' << my_store.store[i].film_name << " " << "\", director: " << my_store.store[i].director << ", genre:  " << my_store.store[i].genre << ", rating: " << my_store.store[i].rating << endl;
  95.         }
  96.     }
  97.     cout << endl;
  98. };
  99.  
  100.  
  101. void FindFilmRating(video_store& my_store, const char genre[]) {
  102.     cout << "По вашему запросу найдено: " << endl;
  103.     int index = -1;
  104.     int rating = 0;
  105.     for (int i = 0; i < my_store.films_number; i++) {
  106.         if (!strcmp(my_store.store[i].genre, genre)) {
  107.             if (my_store.store[i].rating > rating) {
  108.                 index = i;
  109.                 rating = my_store.store[i].rating;
  110.             }
  111.         }
  112.  
  113.     }
  114.     if (index != -1) {
  115.         cout << '\"' << my_store.store[index].film_name << "\", director: " << my_store.store[index].director << ", genre: " << my_store.store[index].genre << ", raiting: " << my_store.store[index].rating << endl;
  116.     }
  117.  
  118.     cout << endl;
  119.  
  120. };
  121.  
  122. int main() {
  123.     setlocale(LC_ALL, "Russian");
  124.  
  125.     video_store my_store;
  126.  
  127.     AddFilm(my_store, "Up", "Bob Piterson", "family", 7);
  128.     AddFilm(my_store, "Star Wars", "George Lukas", "fantazy", 8);
  129.     AddFilm(my_store, "Hitch", "Andy Tennat", "family", 6);
  130.     AddFilm(my_store, "Guardians of Galaxy", " James Gann", "fantazy", 5);
  131.     AddFilm(my_store, "Zootopia", "Bairon Hovard", "family", 6);
  132.  
  133.     ShowAllFilms(my_store);
  134.  
  135.     //DelFilm(my_store);
  136.  
  137.     ShowAllFilms(my_store);
  138.  
  139.     FindFilmName(my_store, "Up");
  140.  
  141.     FindFilmDirector(my_store, "Bob Piterson");
  142.  
  143.     FindFilmRating(my_store, "family");
  144. }
  145.  
Advertisement
Add Comment
Please, Sign In to add comment