class MovieData
{
private:
string Title;
string Director;
int Year;
int Time;
public:
MovieData();
void setTitle(string Title);
void setDirector(string Director);
void setYear(int Year);
void setTime(int Time);
string getTitle();
string getDirector();
int getYear();
int getTime();
};
MovieData::MovieData()
{
Title = "";
Director = "";
Year = 0;
Time = 0;
}
void MovieData::setTitle(string title)
{
Title = title;
}
void MovieData::setDirector(string director)
{
Director = director;
}
void MovieData::setYear(int year)
{
Year = year;
}
void MovieData::setTime(int time)
{
Time = time;
}
string MovieData::getTitle()
{
return Title;
}
string MovieData::getDirector()
{
return Director;
}
int MovieData::getYear()
{
return Year;
}
int MovieData::getTime()
{
return Time;
}
void readMovieData(MovieData *, int);
void MovieDatastats(MovieData *, int);
Это мой класс, определение и прототип функций здесь.... они все в одном и том же main.cpp Вот мое тело
int main()
{
int amount = 0;
cout << "How many movies did you watch last month? ";
cin >> amount;
MovieData *pMovie;
pMovie = new MovieData[amount];
cout << "Please enter the information of your Movies!" << endl;
readMovieData(pMovie, amount);
cout << "\nHere are the information with your Movies!" << endl;
MovieDatastats(pMovie, amount);
}
Для тех, кто помогал мне раньше, я исправил это через свою функцию-прототип. У меня было (MovieData *pMovie, int const size) в качестве параметров, когда это было не нужно. Очень ценил помощь! Мне не нужно было дважды вызывать один и тот же объект, он конфликтует друг с другом. а теперь вот для моей функции, на которой я застрял, и я не знаю, почему...
void readMovieData(MovieData *pMovie, int const size)
{
string title;
string director;
int year;
int time;
for(int i = 0; i < size; i++)
{
cout << "\nPlease enter the Title of the movie: ";
getline(cin,title);
pMovie[i].setTitle(title);
cin.ignore();
cout << "Please enter the Director name of the movie: ";
getline(cin,director);
pMovie[i].setDirector(director);
cin.ignore();
cout << "Please enter the year it was released: ";
cin >> year;
if(year >= 1900 && year <= 2004)
pMovie[i].setYear(year);
else
{
cout << "\nPlease enter a year between 1900 and 2004." << endl;
year = 0;
system("PAUSE");
break;
}
cout << "Please enter the time the movie last: ";
cin >> time;
if(time > 0 && time < 14400)
pMovie[i].setTime(time);
else
{
time = 0;
cout << "\nPlease enter a time between 0 and 14400 in minutes." << endl;
system("PAUSE");
break;
}
}
}
void MovieDatastats(MovieData *pMovie, int const size)
{
float sumTime = 0.0;
float averageTime = 0.0;
for (int i = 0; i < size; i++)
{
sumTime +=pMovie[i].getTime();
}
averageTime = sumTime/size;
cout << "\nYour average time of all your movie is: " << averageTime << endl;
int oldYear = 0;
int count = 0;
int recentYear = 0;
int counter = 0;
oldYear = pMovie[0].getYear();
recentYear = pMovie[0].getYear();
for (int j = 1; j < size; j++)
{
if(pMovie[j].getYear() < oldYear)
{
oldYear = pMovie[j].getYear();
count = j;
}
else if(pMovie[j].getYear() > recentYear)
{
recentYear = pMovie[j].getYear();
counter = j;
}
}
cout << "\nThe oldest Movie you have watched is called..." << endl;
cout << "Title: " << pMovie[count].getTitle() << endl;
cout << "Director: " << pMovie[count].getDirector() << endl;
cout << "Release Year: " << pMovie[count].getYear() << endl;
cout << "\nThe most newest Movie you have watched is called..." << endl;
cout << "Title: " << pMovie[counter].getTitle() << endl;
cout << "Director: " << pMovie[counter].getDirector() << endl;
cout << "Release Year: " << pMovie[counter].getYear() << endl;
}
Как только я запускаю программу и ввожу информацию, я могу ввести название и имя режиссера, но как только я доберусь до того, когда я получу год, программа больше ничего не примет и завершит работу. Как видно из вывода ниже, он пропустил заголовок и удалил первую букву слова. Как я могу это исправить?
Вот мой вывод.
Сколько фильмов вы посмотрели в прошлом месяце? 2
Пожалуйста, введите информацию о ваших фильмах!
Пожалуйста, введите название фильма: Атака акулы
Пожалуйста, введите имя режиссера фильма: Случайное имя
Укажите год выпуска:
Пожалуйста, введите год между 1900 и 2004.
Нажмите любую клавишу для продолжения . . .
Вот информация с вашими фильмами!
Ваше среднее время просмотра всего вашего фильма: 0
Самый старый фильм, который вы смотрели, называется...
Заголовок:
Режиссер: Харк Атака
Год выпуска: 0
Самый новый фильм, который вы смотрели, называется...
Заголовок:
Режиссер: Харк Атака
Год выпуска: 0
Процесс вернул 0 (0x0) время выполнения: 19,781 с Нажмите любую клавишу, чтобы продолжить
.