В програмата са използвани следните класове:
RadioStation - това е класът, който описва радиостанцията. Има атрибути за име, честота в MHz, качество в %, текущо състояние (visible/grayed_out/not_visible) и потребителска оценка в интервала [0, 255]. Има методи за достъп до атрибутите, метод за отпечатване на информацията и метод за определяне на текущото състояние на радио-станцията според дадените условия.
RadioStudio - това е класът, който представя радиостудиото. Той има атрибут за масив от радиостанции и методи за добавяне на радиостанция, извеждане на информация за всички радиостанции и извеждане на имената и качеството на радиостанциите със състояние grayed_out.
main - това е главната функция, която извиква методите на класовете RadioStation и RadioStudio и обработва информацията за радио станциите.
Общо описание на функциите на програмата:
Програмата позволява на потребителя да въведе информация за 6 радио станции от клас RadioStation чрез конзолата. Всички въведени радио станции се съхраняват в масив и информацията за тях се отпечатва на екрана.
Ако състоянието на дадена радио станция е "visible" и потребителската оценка е в интервала [115, 240], то програмата автоматично променя състоянието й на "grayed_out". В противен случай състоянието не се променя.
След като всички радио станции бъдат отпечатани на екрана, програмата приключва своето изпълнение.
#include
#include
using namespace std;
class RadioStation {
private:
string name;
double frequency;
int quality;
string state;
int rating;
public:
RadioStation(string n="", double f=0.0, int q=0, string s="not_visible", int r=0) : name(n), frequency(f), quality(q), state(s), rating(r) {}
~RadioStation() {}
string getName() const { return name; }
double getFrequency() const { return frequency; }
int getQuality() const { return quality; }
string getState() const { return state; }
int getRating() const { return rating; }
void printInfo() const {
cout << "Name: " << name << endl;
cout << "Frequency: " << frequency << " MHz" << endl;
cout << "Quality: " << quality << "%" << endl;
cout << "State: " << state << endl;
cout << "Rating: " << rating << endl;
cout << endl;
}
void setState() {
if (quality > 45) {
state = "visible";
} else if (quality >= 35) {
state = "grayed_out";
} else {
state = "not_visible";
}
if (state == "visible" && rating >= 115 && rating <= 240) {
state = "grayed_out";
}
}
};
int main() {
RadioStation stations[6];
for (int i = 0; i < 6; i++) {
cout << "Enter information for station #" << i+1 << endl;
string name;
double frequency;
int quality;
int rating;
cout << "Name: ";
getline(cin, name);
cout << "Frequency (in MHz): ";
cin >> frequency;
cout << "Quality (0-100): ";
cin >> quality;
cout << "Rating (0-255): ";
cin >> rating;
cin.ignore(); // ignore the newline character in the input buffer
stations[i] = RadioStation(name, frequency, quality, "not_visible", rating);
cout << endl;
}
for (int i = 0; i < 6; i++) {
stations[i].setState();
stations[i].printInfo();
}
cout << "Grayed out stations:" << endl;
for (int i = 0; i < 6; i++) {
if (stations[i].getState() == "grayed_out") {
cout << stations[i].getName() << " - Quality: " << stations[i].getQuality() << endl;
}
}
return 0;
}
Сподели с приятели: |