35657

Untitled

May 17th, 2023
1,040
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.22 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <iostream>
  4. #include <clocale>
  5. #include <string.h>
  6. using namespace std;
  7.  
  8. struct film {                  
  9.     char film_name[100]{};
  10.     char director[30]{};
  11.     char genre[10]{};
  12.     int rating = 0;
  13.    
  14. };
  15.  
  16. struct video_store {  
  17.     film store[100]{};
  18.     int films_number = 0;
  19.     int max_film_number = 100;
  20. };
  21.  
  22.  
  23. //вы собираетесь передавать в функцию строки а передаете символы (вот так обозначается строка const char[] director, а вот так символ: const char director)
  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.     strcpy(my_store.store[my_store.films_number].rating, rating); // rating это int, для него не нужна функция strcpy
  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 << my_store.store[i].director << my_store.store[i].genre << my_store.store[i].rating << endl;
  40.     }
  41.     cout << endl;
  42. }
  43.  
  44. void DelFilm(video_store& my_store, const char film_name) { // то же что и в строке 24, вместо строки передаете отдельный char
  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 (!strcpy(my_store.store[i].film_name, name_u)) {
  50.             delete my_store.store[i];
  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. int main() {
  62.     setlocale(LC_ALL, "Russian");
  63.     film film_arhiv[5]; // для чего вы создаете массив из пяти структур film
  64.     video_store my_store[100]; // и здесь зачем создавать массив магазинов если нам нужен один (уберите [100] чтобы это был отдельный store?
  65.    
  66.  
  67.     film film_arhiv[5]{ // для чего вам заполнять отдельный массив фильмов вместо my_store?
  68.         { "Titanic", "Jaims Kameron", "melodrama", 9 } ,
  69.         { "Gone with the wind", "Victor Fleming","melodrama", 8 },
  70.         { "Pretty Woman", "Garry Marshall", "melodrama", 7 },
  71.         { "Avatar", "Jaims Kameron","fantazy", 9},
  72.         { "Paddington", "Pol King", "family", 5}
  73.     };
  74.     for (int i = 0; i < 2 ; i++) {
  75.         cout << film_arhiv[i].film_name << film_arhiv[i].director << film_arhiv[i].genre << film_arhiv[i].rating << endl;
  76.  
  77.     }
  78.     cout << endl;
  79.  
  80.     video_store.AddFilm("Up", "Bob Piterson", "family", 7); // video_store это тип данных а не название конкретной структуры
  81.     video_store.AddFilm("Star Wars", "George Lukas", "fantazy", 8);
  82.     video_store.AddFilm("Hitch", "Andy Tennat", "family", 6);
  83.     video_store.AddFilm("Guardians of Galaxy", " James Gann", "fantazy", 5);
  84.     video_store.AddFilm("Zootopia", "Bairon Hovard", "family", 6);
  85.  
  86.     video_store.ShowAllFilms(my_store);
  87.    
  88.     video_store.DelFilm(my_store,my_store.store.film_name); // вторым параметром нужно передавать строку, например "Up"
  89. }
Advertisement
Add Comment
Please, Sign In to add comment