Составить программу, печатающую слово ИСТИНА, если указанное высказывание является...

0 голосов
49 просмотров

Составить программу, печатающую слово ИСТИНА, если указанное высказывание является истинным, и ЛОЖЬ в противном случае: даны три стороны одного и три стороны другого треугольника. Эти треугольники равновеликие, т.е. имеют равные площади.​


Информатика (16 баллов) | 49 просмотров
Дано ответов: 2
0 голосов

#include

#include

using namespace std;

#define ld long double

struct triangle{

   ld a;

   ld b;

   ld c;

};

ld square(triangle t){

   ld p = (t.a + t.b + t.c)/2;

   return sqrt(p * (p - t.a) * (p - t.b) * (p - t.c));

}

triangle t1,t2;

void solve(){

   if(square(t1) == square(t2))

       cout << "ИСТИНА";</strong>

   else

       cout << "ЛОЖЬ";</strong>

}

signed main() {

   ios_base::sync_with_stdio(0);

   cin.tie(0);

   cout.tie(0);

   cin >> t1.a >> t1.b >> t1.c >> t2.a >> t2.b >> t2.c;

   solve();

}

(688 баллов)
0 голосов

// PascalABC.NET

function КвадратПлощади(a, b, c: real): real;

begin

 var p := (a + b + c) / 2; // полупериметр

 Result := p * (p - a) * (p - b) * (p - c)

end;

begin

 var eps := ReadReal('Точность решения:');

 var (a, b, c) := ReadReal3('Сторона треугольника 1:');

 var s1 := КвадратПлощади(a, b, c);

 (a, b, c) := ReadReal3('Сторона треугольника 2:');

 var s2 := КвадратПлощади(a, b, c);

 Print(if Abs(s1 - s2) <= eps then 'ИСТИНА' else 'ЛОЖЬ')</strong>

end.


image
(1.6k баллов)
0

Если данные не целочисленные, неточность их внутреннего представления сделает решение неверным. Например, треугольник со сторонами 2.4, 1.8, 3 и треугольник со сторонами 3.9, 4.5 и 1.2 равновеликие. Но при точности 10^-14 результат будет ИСТИНА, а при точности 10^-15 - ЛОЖЬ. И это с учетом того, что сравнивались квадраты площадей, т.е. корень не извлекался.

0

Именно по этой причине введен параметр "точность решения".