Информатика задание по c++ - Вопросы по С+

Вопрос Информатика задание по c++

Регистрация
17 Июн 2013
Сообщения
70
Репутация
0
Спасибо
0
Монет
0
Составить программу, печатающую значение true, если высказывание вашего варианта является истинным, и false — в противном случае. Данные для формирования условия должны вводиться с клавиатуры. При

необходимости, выполнить проверку введенных данных. Номер варианта

соответствует вашему номеру по журналу.

Варианты задания

1.Даны три стороны одного и три стороны другого треугольника. Эти треугольники равновеликие, т.е. имеют равные площади.

C++

Напишите, пожалуйста, код и к нему блок-схему
 
Регистрация
24 Май 2013
Сообщения
74
Репутация
0
Спасибо
0
Монет
0
Сравнение двух вещественных чисел может оказаться некорректным действием в силу ограниченной точности представления таких чисел и ошибок при арифметических операциях с ними. Поэтому тип для сторон треугольников лучше выбрать long double, а саму процедуру сравнения сделать мягкой, а не максимально жёсткой чтобы исключить саму возможность ложных выводов.
С проверкой вводимых числовых данных на корректность ввода, без дурацких "true" и "false" и, естественно, без идиотского квадратного корня sqrt, который здесь не нужен от слова "совсем": #include
#include
#define ld long double

using namespace std;

double yes(ld a, ld b, ld c)
{
return (a > 0 && b > 0 & c > 0 &&
a + b > c && b + c > a && c + a > b);
}

double f(ld x, ld y, ld z)
{
ld p = (x + y + z) / 2;
return p * (p - x) * (p - y) * (p - z);
}

int main()
{
ld a, b, c, A, B, C;
cin >> a >> b >> c >> A >> B >> C;
if (yes(a, b, c) && yes(A, B, C))
cout
 
Регистрация
25 Авг 2013
Сообщения
81
Репутация
0
Спасибо
0
Монет
0
#include
#include
using namespace std;
template
T input(istream& inp, const char* msg) {
cout > value;
return value;
}
class Triangle {
public:
Triangle() : a(0), b(0), c(0) {}
double perimeter()const {
return a + b + c;
}
double area()const {
return sqrt(argument());
}
bool exist()const {
return argument() > 0;
}
bool equals(const Triangle& t)const {
const auto difference = fabs(area() - t.area());
return difference >(istream& inp, Triangle& t) {
t.a = input(inp, "a: ");
t.b = input(inp, "b: ");
t.c = input(inp, "c: ");
return inp;
}
};
int main() {
const auto first = input(cin, "Стороны первого треугольника:\n");
if (!first.exist()) puts("Первый треугольник не существует!");
else {
const auto second = input(cin, "Стороны второго треугольника:\n");
if (!second.exist()) puts("Второй треугольник не существует!");
else cout
 
Регистрация
24 Мар 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
Ваша задача - проверить, равновелики ли два треугольника, данные стороны которых вводятся с клавиатуры. Для этого мы можем использовать формулу Герона для вычисления площади треугольника и затем сравнить площади двух треугольников.

Вот код на C++:
#include
#include

double triangleArea(double a, double b, double c) {
double s = (a + b + c) / 2;
return sqrt(s * (s - a) * (s - b) * (s - c));
}

int main() {
double a1, b1, c1, a2, b2, c2;

std::cout > a1 >> b1 >> c1;

std::cout > a2 >> b2 >> c2;

double area1 = triangleArea(a1, b1, c1);
double area2 = triangleArea(a2, b2, c2);

if (area1 == area2) {
std::cout Ввод сторон второго треугольника
|
|--> Вычисление площади первого треугольника
|
|--> Вычисление площади второго треугольника
|
|--> Сравнение площадей
| |
| |--> Если площади равны, вывод "True"
| |
| |--> Если площади не равны, вывод "False"
|
конец
Обратите внимание, что этот код не проверяет, образуют ли введенные стороны действительно треугольник. Это можно добавить, проверив, что для каждого треугольника сумма длин любых двух сторон больше длины третьей стороны.
 
Сверху Снизу