Есть класс в котором перегружаются операции. В main происходит тестирование перегрузок, т.е. я выбираю из меню какие именно операции нужно протестировать. Не могу сделать нормальное зацикленное меню, то есть тестировать пока пользователь не введет "4" - выход из программы. И как можно сделать вот этот код проверки введенного пользователем значения отдельной функцией:
cin.clear();
while (cin.get() != '\n');
cout << "Ошибка! Повторите попытку: ";
Сама программа:
//Программа тестирует класс "Еда"
#include"Food.h"
#include<iostream>
/*Тестирование перегруженной операции декремента
Входные данные: ссылка на экземпляр класса Food;
Выходные данные: модификация значения срока годности продукта*/
void operation1(Food& object1) {
cout << "\nОперация <Перегрузка декремента>." << endl;
cout << "Операнд: " << object1.get_product_shelf_life() << "дней" << endl;
--object1;
cout << "Результат операции: " << object1.get_product_shelf_life() << "дней" << endl;
}
/*Тестирование перегруженной операции +=
Входные данные: ссылки на экземпляры класса Food;
Выходные данные: модификация значения имени левого операнда*/
void operation2(Food& object1, Food object2) {
cout << "\n<Перегрузка операции +=>." << endl;
cout << "Операнд 1: " << object1.get_name() << "\nОперанд 2: " << object2.get_name() << endl;
object1 += object2;
cout << "Результат операции: " << object1.get_name() << endl;
}
/*Тестирование перегруженной операции сравнения (>)
Входные данные: ссылки на экземпляры класса Food;
Выходные данные: true - если значение левого операнда больше чем значение правого,
false - если значение значение левого операнда меньше чем правого*/
void operation3(Food& ob1, Food& ob2) {
cout << "\n<Перегрузка операции " << "(>)>." << endl;
cout << "Операнд 1: " << ob1.get_name() << " - " << ob1.get_calories() << " ккал" << endl;
cout << "Операнд 2: " << ob2.get_name() << " - " << ob2.get_calories() << " ккал" << endl;
cout << "Результат операции: ";
if (ob1 > ob2) cout << "калорийность " << ob1.get_name() << " больше чем " << ob2.get_name() << endl;
else { cout << "калорийность " << ob2.get_name() << " больше чем " << ob1.get_name() << endl;}
}
int main(){
setlocale(LC_ALL, "rus");
int reg;
bool flag = true;
Food f1("Шоколад", 500, 30.0, 100);
Food f2("Кофе", 150, 10.0, 360);
f1.Print();
f2.Print();
do {
cout << "1.Перегрузка операции --;\n2.Перегрузка операции +=;\n3.Перегрузка операции >;\n4.Выйти из программы.";
cout << "\nСделайте выбор: ";
cin >> reg;
switch (reg) {
case 1: {operation1(f1); }
case 2: {operation2(f1, f2); }
case 3: {operation3(f1, f2); }
case 4: {exit(0); }
}
} while (flag);
cin.get();
return 0;
}
Можно вот так:
int main(){
setlocale(LC_ALL, "rus");
int reg;
bool flag = true;
Food f1("Шоколад", 500, 30.0, 100);
Food f2("Кофе", 150, 10.0, 360);
f1.Print();
f2.Print();
while(true) {
cout << "1.Перегрузка операции --;\n2.Перегрузка операции +=;\n3.Перегрузка операции >;\n4.Выйти из программы.";
cout << "\nСделайте выбор: ";
cin >> reg;
switch (reg) {
case 1: {operation1(f1); break;}
case 2: {operation2(f1, f2); break; }
case 3: {operation3(f1, f2); break; }
case 4: {return 0; }
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не нужно ничего никуда передавать, вы можете сделать переменную num членом класса NewNote, а не функции onCLick() (как dbHelper и др), в функции onCLick() просто...
Пишу JavaFX приложение - ридер, для чтения спецфайлов, содержащих код специфичного языка программирования