Ваше логическое условие неверно:
while (aRating != "G" || aRating != "PG" || aRating != "PG-13" || aRating != "18" || aRating != "NR");
Напишите несколько примеров, и вы увидите, что это условие всегда верно. (любое значение aRating
всегда будет, например, не G или не PG ).
Вам необходимо заменить все ||
на &&
s.
Кроме того, ваш do-while
l oop имеет недостатки, так как вы не будете назначать rating
, когда это необходимо. Вместо этого вы могли бы реструктурировать его следующим образом:
do
{
cout << "rating must be, G, PG, PG-13, 18 or NR \n";
cout << "enter the rating: ";
cin >> aRating;
} while (aRating != "G" && aRating != "PG" && aRating != "PG-13" && aRating != "18" && aRating != "NR");
// now just assign
rating = aRating;
Это также позволяет избежать необходимости по существу прописывать ограничения дважды.