Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба7 / Laba 7 (7.2)
.cpp#include <iostream>
#include <stdexcept>
#include <string>
#include <locale>
using namespace std;
class MagicFlower {
int petals;
string color;
static int whiteCount, pinkCount;
bool isPerfectNumber(int n) {
int sum = 0;
for (int i = 1; i <= n/2; i++) {
if (n % i == 0) sum += i;
}
return sum == n;
}
public:
MagicFlower(int p, const string& c) {
if (!isPerfectNumber(p)) {
throw invalid_argument("Число лепестков должно быть совершенным");
}
petals = p;
if (c == "white" || c == "pink") {
color = c;
} else {
// Выбираем цвет, объектов которого создано меньше
color = (whiteCount <= pinkCount) ? "white" : "pink";
}
if (color == "white") whiteCount++;
else pinkCount++;
}
void print() const {
cout << "Цветок с " << petals << " лепестками, цвет: " << color << endl;
}
};
int MagicFlower::whiteCount = 0;
int MagicFlower::pinkCount = 0;
int main() {
setlocale(LC_ALL, "ru_RU.UTF-8");
try {
MagicFlower f1(6, "white"); // 6 - совершенное число
f1.print();
MagicFlower f2(28, "pink"); // 28 - совершенное число
f2.print();
MagicFlower f3(12, "blue"); // 12 - не совершенное, выберет white
f3.print();
} catch (const exception& e) {
cout << "Ошибка: " << e.what() << endl;
}
return 0;
}
Соседние файлы в папке Лаба7
