Описать класс призма: объём, высота, количество граней, длинна сторон, площадь основания. Реализовать get-
и set-
методы для работы с элемент-данными класса. Организовать выбор (меню) входные и выходные данные. Защитить элемент-данные призмы от внешних кодов.
Рисунок 1 — Класс Призма
#include <iostream> using namespace std; class Prism { private: double high, // высота призмы vol, // объём призмы V = high * Sосн length_side, // длинна сторон(граней) призмы space_base; // площадь основания int number_grain; // число боковых граней public: Prism(double h = 1, double lside = 1, int num = 3, double sbase = 10); // конструктор по умолчанию void Sethigh(const double & ); // установить высоту призмы void setLengthSide(const double & ); // установить длинну граней void setGrain(const int & ); // установить количество боковых граней призмы void setSpaceBase(const double &); // задать площадь основания призмы double getHigh() const; int getGrain() const; // вернуть количество боковых граней призмы double getSpaceBase() const; // вернуть значение площади основания призмы double getLengthSide() const; // вернуть значение длинны сторон призмы double getVol(); // вернуть V призмы }; int main() { Prism obj1; // создаём объект призма, активируется конструктор по умолчанию int key; // выбор в меню bool exit = false; //переменная-флаг цикла while while (!exit) // начало while { cout << "Сделайте выбор:\n0 - выход; 1 - показать высоту призмы;\n2 - показать колличество боковых граней;" << " 3 - показать площадь основания;\n4 - показать длинну сторон призмы; 5 - показать объём призмы;\n" << "6 - установить высоту призмы; 7 - установить длинну сторон призмы; \n8 - установить количество граней; 9 - задать площадь основания\n>> "; cin >> key; double temp; // временная переменная для хранения аргументов switch (key) // выбор действия { case 0: {exit = true; break;} case 1: {cout << "Высота призмы = " << obj1.getHigh() << endl << endl; break;} case 2: {cout << "Количество боковых граней = " << obj1.getGrain() << endl << endl; break;} case 3: {cout << "Площадь основания = " << obj1.getSpaceBase() << endl << endl; break;} case 4: {cout << "Длинна сторон призмы = " << obj1.getLengthSide() << endl << endl; break;} case 5: {cout << "Объём призмы = " << obj1.getVol() << endl << endl; break;} case 6: {cout << ":= "; cin >> temp; obj1.Sethigh(temp); break;} case 7: {cout << ":= "; cin >> temp; obj1.setLengthSide(temp); break; } case 8: {cout << ":= "; cin >> temp; obj1.setGrain(temp); break;} case 9: {cout << ":= "; cin >> temp; obj1.setSpaceBase(temp);break;} default: {cout << "Не верный выбор\n";} } // конец выбора } // конец while return 0; } Prism::Prism(double h, double lside, int num, double sbase) // конструктор по умолчанию : high(h), length_side(lside), number_grain(num), space_base(sbase), vol(h * sbase) // инициализаторы элемент-данных класса { // пустое тело конструктора } /// set-методы класса void Prism::Sethigh(const double & h) // установить высоту призмы { high = (h > 0 ? h : 1); // если h не нулевое положительное число, то инициализировать высоту значением h, иначе единицей } void Prism::setLengthSide(const double & d) // установить длинну граней { length_side = (d > 0 ? d : 1); // если h не нулевое положительное число, то инициализировать высоту значением h, иначе единицей } void Prism::setGrain(const int & number) // установить количество боковых граней призмы { number_grain = (number > 0 ? number : 3); // минимальное количество граней - 3 } void Prism::setSpaceBase(const double &number) // задать площадь основания призмы { space_base = (number > 0 ? number : 10); // пусть по умолчанию площадь равна 10 } /// get-методы класса double Prism::getHigh() const // вернуть значение высоты призмы { return high; } int Prism::getGrain() const // вернуть количество боковых граней призмы { return number_grain; } double Prism::getSpaceBase() const // вернуть значение площади основания призмы { return space_base; } double Prism::getLengthSide() const // вернуть значение длинны сторон призмы { return length_side; } double Prism::getVol() // вернуть V призмы { return vol = space_base * high; }
Программа написана в ОС Linux. Для корректного отображения русского текста в Windows, прочитайте статью Кириллица в консоли. Результат работы программы показан на рисунке 1.
Комментарии
Ганнибал Лектер
Sancho уже сказал что не так, в добавок уточняй, что призма правильная.
Alex Antonyuk
gornyyvladimir
Arthur
Sancho
Если у меня введены длинна сторон и количество граней получаю площадь основания. Если после этого ввожу новую площадь — что меняется? Длинна или количество сторон? Плохо поставленная задача.