Пожалуйста, используйте функцию getline () для ввода пользователем, потому что cin >> name
спасет от имени Angelina Jol ie только Angelina. Потому что он читает только целые слова, не включая пробелы.
Чтобы использовать функцию getline (), поставьте это после #include<cstring>
#include <string>
Поэтому используйте getline так:
cout << "\n enter the actor name ";
std::getline (std::cin,actor);
Другая проблема заключается в том, что вам нужен cin.ignore () между двумя входами. Потому что вам нужно вывести sh символ новой строки из буфера между ними.
До того, как l oop запросит такие данные:
cout << "how many films ";
cin >> n;
cin.ignore();
В l oop как this:
cout << "\n enter the film name ";
getline(cin, name);
cout << "\n enter the production year ";
cin.ignore();
cin >> year;
cout << "\n enter the producer name ";
cin.ignore();
getline(cin, prod);
cout << "\n enter the actor name ";
getline(cin, actor);
b) (поместите эту функцию в свой класс в разделе publi c сразу после строки GetMania ()):
static void FindFilm(Film arr[], int cntFilms, string actor)
{
for (int i = 0; i < cntFilms; i++)
{
if (arr[i].GetMaina() == "Angelina Jolie")
cout << "The movie who has main actor Angelina Jolie is" << arr[i].GetName() << endl;
}
}
И из основного вызова это так сразу после l oop.
string actor = "Angelina Jolie";
Film::FindFilm(obs, n, actor);
Также лучше записать escape-последовательность (или специальный символ) для новой строки (\ n) в конце выходного сообщения. Как это:
cout << "The name of movie: \n" << name;