Помогите дополнить и улучшить программу

На уроке инфы задали на Паскале написать программу, вычисляющую периметр треугольника... Вот в голову и пришла идея написать эту прогу на C++, но немножко по-другому. Заранее извиняюсь за отсутствие комментариев в коде ))

    #include <cmath>
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
int main ();
void leavePet ();
void contin ();
void choice ();
double a, b, c, d;
const double pi = 3.1415926;

class Triangle
{
private:
    void provTriangle (double s1, double s2, double s3)
    {
        if (((s1>=(s2+s3))&&(s2>=(s1+s3))&&(s3>=(s1+s2))))
        {
            cout << "Введённые значения не могут быть сторонами треугольника." << endl;
            contin ();
        }
    }
    void ploshadGeron ()
    {
        cout << "Введите значения сторон a, b и c.\na = ";
        cin  >> a;
        cout << "b = ";
        cin  >> b;
        cout << "c = ";
        cin  >> c;
        provTriangle (a, b, c);
        d = (a+b+c)/2;
        cout << "Площадь треугольника равна " << (sqrt(d*(d-a)*(d-b)*(d-c))) << "." << endl;
    }
    void ploshadSimple ()
    {
        cout << "Введите значения основания треугольника a ";
        cin  >> a;
        cout << "и высоты h, проведённой к основанию: ";
        cin  >> c;
        cout << "Площадь треугольника = " << a*c/2 << "." << endl;
    }

    void perimSimple ()
    {
        cout << "Введите стороны треугольника a, b и c." << endl;
        cout << "Введите сторону а: ";
        cin  >> a;
        cout << "Введите сторону b: ";
        cin  >> b;
        cout << "Введите сторону с: ";
        cin  >> c;
        provTriangle (a, b, c);
        cout << "Периметр треугольника = " << a+b+c << "." << endl;
    }

    void ploshadCircle ()
    {
        double r;
        double p;
        cout << "Внимание! Необходимо знать периметр треугольника." << endl
             << "Если необходимо вычислить его дополнительно, нажмите 1." << endl
             << "Если этого не требуется, нажмите 0." << endl;

        short q;
        cin >> q;
        switch (q)
        {
        case 1:
            perimsTriangle ();
            break;
        case 0:
            break;
        default:
            leavePet ();
            break;
        }
        cout << "Введите радиус вписанной окружности... " << endl;
        cin >> r;
        cout << "...и периметр треугольника. ";
        cin >> p;
        cout << "Площадь треугольника равна " << 0.5*p*r << "." << endl;
    }

    void perimCircle ()
    {
        cout << "Внимание! Необходимо знать площадь треугольника." << endl
             << "Если необходимо вычислить её дополнительно, нажмите 1." << endl
             << "Если этого не требуется, нажмите 0." << endl;

        short q;
        cin >> q;
        switch (q)
        {
        case 1:
            ploshadsTriangle ();
            break;
        case 0:
            break;
        default:
            leavePet ();
            break;
        }
        cout << "Введите радиус вписанной окружности... ";
        cin >> a;
        cout << "...и площадь треугольника. ";
        cin >> b;
        cout << "Периметр треугольника равен " << 2*b/a << "." << endl;
    }


    void ploshadSin ()
    {
        cout << "Введите стороны треугольника." << endl
             << "a = ";
        cin  >> a;
        cout << "b = ";
        cin  >> b;
        cout << "Необходимо указать значение синуса угла между сторонами a и b." << endl
             << "Вы можете указать значение угла, и программа найдёт его синус самостоятельно (1)," << endl
             << "или можно ввести значение синуса сразу (2)." << endl;
        short q;
        double u, sinu;
        cin >> q;
        switch (q)
        {
        case 1:
            cout << "Угол = ";
            cin  >> u;
            cout << "Площадь равна " << 0.5*a*b*(sin (u)) << "." << endl;
            break;
        case 2:
            cout << "Cинус угла = ";
            cin  >> sinu;
            cout << "Площадь равна " << 0.5*a*b*sinu << "." << endl;
            break;
        default:
            leavePet ();
            break;
        }
    }

    void ploshadStorRad ()
    {
        cout << "Введите сторону a: ";
        cin  >> a;
        cout << "Введите сторону b: ";
        cin  >> b;
        cout << "Введите сторону c: ";
        cin >> c;
        cout << "Введите радиус описанной окружности: ";
        cin  >> d;
        cout << "Площадь треугольника равна " << (a*b*c)/(4*d) << "." << endl;
    }


    void ploshadsTriangle ()
    {
        cout << "Чтобы вычислить площадь:" << endl
             << "- по основанию и высоте, нажмите 1;" << endl
             << "- зная периметр и радиус вписанной окружности, нажмите 2;" << endl
             << "- используя две стороны и угол между ними, нажмите 3;" << endl
             << "- зная 3 стороны и радиус описанной окружности, нажмите 4;" << endl
             << "- по формуле Герона, нажмите 5." << endl;
        short q;
        cin >> q;
        switch (q)
        {
        case 1:
            ploshadSimple ();
            break;
        case 2:
            ploshadCircle ();
            break;
        case 3:
            ploshadSin ();
            break;
        case 4:
            ploshadStorRad ();
            break;
        case 5:
            ploshadGeron ();
            break;
        default:
            leavePet ();
            break;
        }
    }


    void perimsTriangle ()
{
    short q;
    cout << "Чтобы вычислить периметр по трём сторонам, нажмите 1." << endl
         << "Чтобы вычислить периметр, используя радиус вписанной в треугольник окружности, нажмите 2." << endl;
    cin  >> q;
    switch (q)
    {
    case 1:
        perimSimple ();
        break;
    case 2:
        perimCircle ();
        break;
    default:
        leavePet ();
        break;
    }
}

public:
    void displayTriangle ()
    {   cout << "Чтобы вычислить периметр, нажмите 1. " << endl
             << "Чтобы вычислить площадь, нажмите 2." << endl;
        short q;
        cin  >> q;
        switch (q)
        {
        case 1:
            perimsTriangle ();
            break;
        case 2:
            ploshadsTriangle ();
            break;
        default:
            leavePet ();
            break;
        }
        contin ();
    }
};


class Circle
{
private:

    void lenghtCircle ()
    {
        double r = 0;
        cout << "Введите радиус окружности: ";
        cin  >> r;
        if (r > 0)
            cout << "Длина окружности равна " << 2*pi*r << "." << endl;
        if (r = 0)
            cout << "Окружности с радиусом 0 не существует!" << endl;
        if (r < 0)
            cout << "Окружности с отрицательным радиусом не существует!" << endl;
    }
    void ploshadCircle ()
    {
        double r = 0;
        cout << "Введите радиус круга: ";
        cin  >> r;
        if (r > 0)
            cout << "Площадь круга равна " << pi*(pow (r, 2)) << "." << endl;
        if (r = 0)
            cout << "Окружности с радиусом 0 не существует!" << endl;
        if (r < 0)
            cout << "Окружности с отрицательным радиусом не существует!" << endl;
    }
public:
    void displayCircle ()
    {
        cout << "Чтобы вычислить длину окружности, нажмите 1." << endl
             << "Чтобы вычислить площадь круга, нажмите 2." << endl;
        short q;
        cin  >> q;
        switch (q)
        {
        case 1:
            lenghtCircle ();
            break;
        case 2:
            ploshadCircle ();
            break;
        default:
            leavePet ();
            break;
        }
        contin ();
    }
};

class Parallelogramm
{
private:
    void paral ()
    {
        cout << "Чтобы вычислить площадь, нажмите 1;" << endl
             << "чтобы вычислить периметр, нажмите 2." << endl;
        short q;
        cin >> q;
        switch (q)
        {
        case 1:
            ploshPar ();
            break;
        case 2:
            perimPryam ();
            break;
        default:
            leavePet ();
            break;
        }
    }

    void ploshPar ()
    {
        cout << "Чтобы вычислить площадь по основанию и высоте, нажмите 1;" << endl
             << "чтобы вычислить площадь по смежным сторонам и углу (синусу угла) между ними, нажмите 2;" << endl
             << "чтобы вычислить площадь, зная диагонали и угол (синус угла) между ними, нажмите 3." << endl;
        short q;
        cin >> q;
        switch (q)
        {
        case 1:
            ploshParSimple ();
            break;
        case 2:
            ploshParStSin ();
            break;
        case 3:
            ploshParDiagSin ();
            break;
        default:
            leavePet ();
            break;
        }
    }
    void ploshParSimple ()
    {
        cout << "Введите значения стороны и основания параллелограмма.\na = ";
        cin  >> a;
        cout << "h = ";
        cin  >> b;
        cout << "Площадь равна " << a*b << "." << endl;
    }
    void ploshParStSin ()
    {
        cout << "Введите значения сторон a и b параллелограмма." << endl
             << "a = ";
        cin  >> a;
        cout << "b = ";
        cin  >> b;
        cout << "Необходимо указать значение синуса угла между сторонами a и b." << endl
             << "Вы можете указать значение угла, и программа найдёт его синус самостоятельно (1)," << endl
             << "или можно ввести значение синуса сразу (2)." << endl;
        short q;
        double ugol = 0;
        cin >> q;
        switch (q)
        {
        case 1:
            cout << "Введите значение угла, находящегося между смежными сторонами параллелограмма: ";
            cin  >> ugol;
            cout << "Площадь равна " << a*b*(sin(ugol)) << "." << endl;
            break;
        case 2:
            cout << "Введите синус угла, находящегося между смежными сторонами параллелограмма: ";
            cin  >> ugol;
            cout << "Площадь равна " << a*b*ugol << "." << endl;
            break;
        default:
            leavePet ();
            break;
        }
    }
    void ploshParDiagSin ()
    {
        double d1 = 0, d2 = 0;
        cout << "Введите значения диагоналей параллелограмма:\nd1 = ";
        cin  >> d1;
        cout << "d2 = ";
        cin  >> d2;
        cout << "Необходимо указать значение синуса угла между диагоналями." << endl
             << "Вы можете указать значение угла, и программа найдёт его синус самостоятельно (1)," << endl
             << "или можно ввести значение синуса сразу (2)." << endl;
        short q;
        double ugol = 0;
        cin >> q;
        switch (q)
        {
        case 1:
            cout << "Введите значение угла, находящегося между диагоналями параллелограмма: ";
            cin  >> ugol;
            cout << "Площадь равна " << 0.5*d1*d2*(sin(ugol)) << "." << endl;
            break;
        case 2:
            cout << "Введите синус угла, находящегося между диагоналями параллелограмма: ";
            cin  >> ugol;
            cout << "Площадь равна " << 0.5*d1*d2*ugol << "." << endl;
            break;
        default:
            leavePet ();
            break;
        }
    }

    void quad ()
    {
        cout << "Чтобы вычислить периметр квадрата, нажмите 1;" << endl
             << "чтобы вычислить площадь квадрата, нажмите 2." << endl;
        short q;
        cin  >> q;
        switch (q)
        {
        case 1:
            perimQuad ();
            break;
        case 2:
            ploshQuad ();
            break;
        default:
            leavePet ();
            break;
        }
    }

    void perimQuad ()
    {
        cout << "Введите сторону квадрата: ";
        cin  >> a;
        cout << "Периметр квадрата равен " << 4*a << "." << endl;
    }

    void ploshQuad ()
    {
        cout << "Введите сторону квадрата: ";
        cin  >> a;
        cout << "Площадь квадрата равна " << pow (a, 2) << "." << endl;
    }

    void pryam ()
    {
        cout << "Чтобы вычислить периметр прямоугольника, нажмите 1;" << endl
             << "Чтобы вычислить площадь прямоугольника, нажмите 2." << endl;
        short q;
        cin  >> q;
        switch (q)
        {
        case 1:
            perimPryam ();
            break;
        case 2:
            ploshPryam ();
            break;
        default:
            leavePet ();
            break;
        }
    }

    void perimPryam ()
    {
        cout << "Введите сторону a... ";
        cin  >> a;
        cout << "... и смежную с ней сторону b: ";
        cin  >> b;
        cout << "Периметр параллелограмма/прямоугольника равен " << (a+b)*2 << ".";
    }

    void ploshPryam ()
    {
        cout << "Чтобы вычислить площадь по смежным сторонам, нажмите 1;" << endl
             << "чтобы вычислить площадь, зная диагональ, нажмите 2." << endl;
        short q;
        cin  >> q;
        switch (q)
        {
        case 1:
            cout << "Введите сторону a: ";
            cin  >> a;
            cout << "введите сторону b: ";
            cin  >> b;
            cout << "Площадь равна " << a*b << "." << endl;
            break;
        case 2:
            cout << "Введите значение диагонали :";
            cin  >> d;
            cout << "Необходимо указать значение синуса угла между диагоналями." << endl
                 << "Вы можете указать значение угла, и программа найдёт его синус самостоятельно (1)," << endl
                 << "или можно ввести значение синуса сразу (2)." << endl;
            short q = 0;
            double ugol = 0;
            cin >> q;
            switch (q)
            {
            case 1:
                cout << "Введите значение угла, находящегося между диагоналями прямоугольника: ";
                cin  >> ugol;
                cout << "Площадь равна " << 0.5*(pow (d, 2))*(sin(ugol)) << "." << endl;
                break;
            case 2:
                cout << "Введите синус угла, находящегося между диагоналями прямоугольника: ";
                cin  >> ugol;
                cout << "Площадь равна " << 0.5*(pow (d, 2))*ugol << "." << endl;
                break;
            default:
                leavePet ();
                break;
            }
        }

    }

    void perimTrap ()
{
    cout << "Введите значения сторон трапеции:" << endl
         << "a = ";
    cin  >> a;
    cout << "b = ";
    cin  >> b;
    cout << "c = ";
    cin  >> c;
    cout << "d = ";
    cin  >> d;
    cout << "Периметр равен " << a+b+c+d << "." << endl;
}

    void ploshTrap ()
    {
        cout << "Введите основания (нажмите 1, их сумму (нажмите 2) или полусумму (нажмите 3)." << endl;
        short q;
        cin  >> q;
        switch (q)
        {
        case 1:
            cout << "Введите значение основания a: ";
            cin  >> a;
            cout << "Введите значение основания b: ";
            cin  >> b;
            break;
        case 2:
            cout << "Введите сумму оснований: ";
            cin  >> c;
            break;
        case 3:
            cout << "Введите полусумму оснований: ";
            cin  >> d;
            break;
        default:
            leavePet ();
            break;
        }
        cout << "Введите значение высоты: ";
        double h = 0;
        cin  >> h;
        switch (q)
        {
        case 1:
            cout << "Площадь трапеции равна " << ((a+b)/2)*h << "." << endl;
            break;
        case 2:
            cout << "Площадь трапеции равна " << c/2*h << "." << endl;
            break;
        case 3:
            cout << "Площадь трапеции равна " << d*h << "." << endl;
            break;
        }
    }
    void romb ()
    {
        cout << "Чтобы вычислить периметр ромба, нажмите 1.\nЧтобы вычислить площадь ромба, нажмите 2." << endl;
        short q;
        cin  >> q;
        switch (q)
        {
        case 1:
            perimRomb ();
            break;
        case 2:
            ploshRomb ();
            break;
        default:
            leavePet ();
            break;
        }
    }
    void perimRomb ()
    {
        cout << "Введите значение стороны ромба: ";
        cin  >> a;
        cout << "Периметр ромба равен " << a*4 << "." << endl;
    }
    void ploshRomb ()
    {
        cout << "Чтобы вычислть площадь:" << endl
             << "- по основанию и высоте, нажмите 1;" << endl
             << "- по стороне и синусу прилежащего угла (углу), нажмите 2;" << endl
             << "- по значению диагоналей, нажмите 3;" << endl
             << "- по радиусу вписанной окружности и синусу угла (углу) между сторонами помба, нажмите 4;" << endl
             << "- по значениям основания и радиуса вписанной окружности, нажмите 5." << endl;
        short q;
        cin  >> q;
        switch (q)
        {
        case 1:
            ploshRombSimple ();
            break;
        case 2:
            ploshRombStSin ();
            break;
        case 3:
            ploshRombDiag ();
            break;
        case 4:
            ploshRombRadSin ();
            break;
        case 5:
            ploshRombOsnRad ();
            break;
        default:
            leavePet ();
            break;
        }
    }
    void ploshRombSimple ()
    {
        cout << "Введите значение основания: ";
        cin  >> a;
        cout << "Введите значение высоты: ";
        cin  >> b;
        cout << "Площадь равна " << a*b << "." << endl;
    }
    void ploshRombStSin ()
    {
        cout << "Введите значение основания трапеции: ";
        cin  >> a;
        cout << "Необходимо указать значение синуса угла между сторонами трапеции." << endl
             << "Вы можете указать значение угла, и программа найдёт его синус самостоятельно (1)," << endl
             << "или можно ввести значение синуса сразу (2)." << endl;
        short q;
        double ugol = 0;
        cin >> q;
        switch (q)
        {
        case 1:
            cout << "Введите значение угла: ";
            cin  >> ugol;
            cout << "Площадь равна " << (pow (a, 2))*(sin(ugol)) << "." << endl;
            break;
        case 2:
            cout << "Введите синус угла: ";
            cin  >> ugol;
            cout << "Площадь равна " << (pow (a, 2))*ugol << "." << endl;
            break;
        default:
            leavePet ();
            break;
        }
    }
    void ploshRombDiag ()
    {
        cout << "Введите значения диагоналей ромба:\nd1 = ";
        cin  >> a;
        cout << "d2 = ";
        cin  >> b;
        cout << "Площадь равна " << a*b/2 << "." << endl;
    }
    void ploshRombRadSin ()
    {
        cout << "Введите значение радиуса вписанной в ромб окружности: ";
        double r = 0;
        cin  >> r;
        cout << "Необходимо указать значение синуса угла между сторонами трапеции." << endl
             << "Вы можете указать значение угла, и программа найдёт его синус самостоятельно (1)," << endl
             << "или можно ввести значение синуса сразу (2)." << endl;
        short q;
        double ugol = 0;
        cin >> q;
        switch (q)
        {
        case 1:
            cout << "Введите значение угла: ";
            cin  >> ugol;
            cout << "Площадь равна " << 4*(pow (r, 2))/(sin(ugol)) << "." << endl;
            break;
        case 2:
            cout << "Введите синус угла: ";
            cin  >> ugol;
            cout << "Площадь равна " << 4*(pow (r, 2))/ugol << "." << endl;
            break;
        default:
            leavePet ();
            break;
        }
    }
    void ploshRombOsnRad ()
    {
        cout << "Введите значение основания ромба... ";
        cin  >> a;
        cout << "... и радиуса вписанной окружности. ";
        cin  >> b;
        cout << "Площадь ромба равна " << 2*a*b << "." << endl;
    }
    void trap ()
    {
        cout << "Чтобы вычислить периметр трапеции, нажмите 1;" << endl
             << "чтобы вычислить площадь трапеции, нажмите 2." << endl;
        short q;
        cin  >> q;
        switch (q)
        {
        case 1:
            perimTrap ();
            break;
        case 2:
            ploshTrap ();
            break;
        default:
            leavePet ();
            break;
        }
};

public:
    void displayParRand ()
    {
        cout << "Чтобы перейти к:" << endl
             << "- квадрату, нажмите 1;" << endl
             << "- прямоугольнику, нажмите 2;" << endl
             << "- параллелограмму, нажмите 3;" << endl
             << "- трапеции, нажмите 4;" << endl
             << "- ромбу, нажмите 5." << endl;
        short q;
        cin  >> q;
        switch (q)
        {
        case 1:
            quad ();
            break;
        case 2:
            pryam ();
            break;
        case 3:
            paral ();
            break;
        case 4:
            trap ();
            break;
        case 5:
            romb ();
            break;
        default:
            leavePet ();
            break;
        }
        contin ();
    }

};

void leavePet ()
{
    srand (time(0));
    const short NumPets = 4;
    string pets [NumPets] = {"кошку", "тушканчика", "хомяка", "дятла"};
    cout << "Убери " << pets [rand ()%NumPets] << " с клавиатуры!!!" << endl;
}

void ext ()
{
    cout << endl << "Создатель программы — Rikudo Sannin.";
    cin.get ();
    cin.get ();
    exit (0);
}

void contin ()
{
    cout << endl << "Хотите начать заново? Нажмите 1, чтобы продолжить, и 0, чтобы выйти." << endl;
    short cont;
    cin  >> cont;
    cout << endl;
    switch (cont)
    {
        case 1:
            main ();
            break;
        case 0:
            ext ();
            break;
        default:
            leavePet ();
            break;
    }
}

void choice ()
{
    short numOfFig;

    cout << "Чтобы вычислить площадь или периметр" << endl
         << "- треугольника, нажмите 1;" << endl
         << "- видов параллелограмма, нажмите 2;" << endl
         << "- круга (окружности), нажмите 3." << endl
         << endl << "Чтобы выйти, нажмите 0." << endl;

    cin  >> numOfFig;
    switch (numOfFig)
    {
    case 1:
        Triangle triangle1;
        triangle1.displayTriangle ();
        break;
    case 2:
        Parallelogramm par1;
        par1.displayParRand ();
        break;
    case 3:
        Circle circle1;
        circle1.displayCircle ();
        break;
    case 0:
        ext ();
        break;
    default:
        leavePet ();
        break;
    }
}

int main ()
{
    setlocale (LC_ALL, "Russian");
    double a, b, c, d = 0;
    cout << "Вас приветствует программа вычисления площади и периметра геометрических фигур." << endl << endl;
    choice ();
    contin ();
    system ("pause");
    return 0;
}

ты сделай чтоб она писала не только ответы но и решения!

Зачем? Там только формулы, которые есть в учебниках и справочниках)) Но, в общем-то, можно их вывести на экран.

Подскажите можно ли в програму вставить фотку или картинку?
Если можно то как?
ЗАРАНЕЕ СПАСИБО!!!

Василь, можно, если это оконное, а не консольное приложение. А как — не знаю)) Создайте тему на форуме, там помогут)

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.