Помощь в класса, вычисления площади
Подскажите пожалуйста вот у меня есть программа, которая считает площадь и периметр треугольника. Что и где мне нужно написать, чтобы объявлять длины сторон уже после компилировании? Заранее спасибо. Вот код:
#include <iostream>
#include <math.h>
using namespace std;
class Triangle
{
private:
int a = 0, b = 0, c = 0;
public:
int Parties(int A, int B, int C)
{
a = A;
b = B;
c = C;
};
void Perimetr()
{
int P = a + b + c;;
cout << "Периметр: " << P << endl;
}
void Square()
{
double p = (a + b + c) / 2;
double S = sqrt(p*(p - a)*(p - b)*(p - c));
cout << "\nПлощадь: " << S << endl;
}
};
int main()
{
Triangle one;
one.Perimetr();
one.Square();
return 0;
}
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
cout << "Введите стороны:";
double a,b,c;
cin >> a >> и >> c;
Triangle one(a,b,c);
one.Perimetr();
one.Square();
И замените int на double у себя - иначе получите массу неверных результатов...
Автор решения: KoVadim
→ Ссылка
мой вариант, коментарии внутри кода
#include <iostream>
#include <math.h>
using namespace std;
class Triangle
{
private:
int a = 0, b = 0, c = 0;
public:
// сделал void, так как функции нечего возвращать
void Parties(int A, int B, int C)
{
a = A;
b = B;
c = C;
};
void Perimetr()
{
int P = a + b + c;
cout << "Периметр: " << P << endl;
}
void Square()
{
double p = (a + b + c) / 2.0;// а тут нужно именно так написать.
// иначе, если будет треугольник 1 2 2, то периметр будет 2, а не 2.5
// и площадь ниже будет нулевая:)
double S = sqrt(p*(p - a)*(p - b)*(p - c));
cout << "\nПлощадь: " << S << endl;
}
};
int main()
{
Triangle one;
int a,b,c;
cout << "Введите длины сторон";
cin >> a >> b >> c;// это собственно ввод
one.Parties(a,b,c); //установим значения объекту
one.Perimetr();
one.Square();
return 0;
}
конечно, наверно лучше вместо int использовать double и чуточку переделать логику, но я сделал минимальными изменениями.