Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2017, 20:21   #1
MySkill
Новичок
Джуниор
 
Регистрация: 06.04.2017
Сообщений: 1
По умолчанию Помогите найти ошибку (С++)

Помогите с программой. Когда ввожу угол, консоль просто закрывается ( хотя она сработала один раз, а второй не хочет ). И если могли бы, помогите реализовать контэйнерный класс deque в этой программе, а то вообще не понимаю, как его здесь приставить.
Очень надеюсь на вашу помощь !!!
Вот если что условие
///////
Создать абстрактный базовый класс Triangle(треугольеник) для представления треугольника виртуальными функциями вычисления площади и периметра. Поля должны включать две стороны и угол между ними. Определить классы-наследники: прямоугольный треугольник, равнобедренный треугольник, равносторонний треугольник со своими функциями вычисления площади
/////
Код:
#include <iostream>
#include <cmath>
class Triangle
{
protected:
	double a, b; 
	double u;  
public:
	Triangle(){}
	Triangle(double x, double y, double z) : a(x), b(y), u(z){}
	virtual ~Triangle(){}
	virtual double S() = 0; 
	virtual double P() = 0; 
};
class pryam : public Triangle 
{
public:
	pryam(double x, double y, double z) : Triangle(x, y, z){}
	pryam(){}
	double S();
	double P(); 

};
double pryam::S()
{
	return 0.5*a*b*sin(u);//?
}
double pryam::P()
{
	double c = sqrt(a*a + b*b - 2 * a*b*cos(u));//?
	return a + b + c;//?
};
///////////////
class ravbedr : public Triangle
{

public:
	ravbedr(double x, double y, double z) : Triangle(x, y, z){}
	ravbedr(){}
	double S();
	double P();
};
double ravbedr::S()
{
	double c = 2 * a*sin(u / 2);
	double p = (a + b + c) / 2;
	return sqrt(p*(p - a)*(p - b)*(p - c));
}
double ravbedr::P()
{
	double c = 2 * a*sin(u / 2);
	return a + b + c;
}
///////////////////
class ravstor : public Triangle
{
public:
	ravstor(double x, double y, double z) : Triangle(x, y, z){}
	ravstor(){}
	double S();
	double P();
};
double ravstor::S()
{
	return 0.43*a*a;
}
double ravstor::P()
{
	return 3 * a;
}
/////////////////////////////
int main()
{
	Triangle *pt = NULL;
	int a, b, u;
	do
	{
		std::cout << "Enter length of the first side: "; std::cin >> a;
		std::cout << "Enter length of the second side: "; std::cin >> b;
		std::cout << "Enter the angle between the sides: "; std::cin >> u;
	} while (a < 0 || b < 0 || u < 0 || u > 180);
	if (a == b)
	{
		if (u == 60) pt = new ravstor(a, b, u);
		else pt = new ravbedr(a, b, u);
	}
	else if (u == 90) pt = new pryam(a, b, u);
	if (pt == NULL) std::cout << "Random triangle, count yourself, it's boring...";
	else std::cout << "P = " << pt->P() << "\nS = " << pt->S();
	delete pt;
	return 0;
}
MySkill вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Язык C]: В массиве числа образуют неубывающую последовательность. Найти количество различных чисел в массиве. Помогите найти ошибку. Yulia24* Помощь студентам 0 18.10.2016 20:41
Дан массив а(n) типа SWORD. найти сумму всех отрицательных элементов массива.помогите найти ошибку Юлия123456 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.09.2016 06:12
Найти седловые точки в матрице(помогите найти ошибку) - pascal tdsotm Помощь студентам 0 20.11.2014 18:57
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10