Revan, точно решал такую задачу и выкладывал решение на форуме, так что если тебе это очень надо и ты не ленивый, то залезь в мой Профиль-Сообщения, и ищи там...
Добавлено через 5 минут и 34 секунды нашел у себя на компе... я компилил в VS 2008, поэтому, если че инкулуды подрихтуешь, а так прога рабочая вроде...
Код | #include "stdafx.h" #include <iostream> #define _USE_MATH_DEFINES #include <math.h>
using namespace std;
struct piece { double len; double ang; };
double my_torad(double a) { return ((a*M_PI)/180); }
bool mycheck(piece a, piece b, piece c) { if (a.ang==b.ang || a.ang==c.ang || b.ang==c.ang) return false;
double res1=pow(c.len, 2)+pow(b.len, 2)-2*cos(my_torad(c.ang-b.ang))*c.len*b.len; double res2=pow(c.len, 2)+pow(b.len, 2)-2*cos(my_torad(180-(c.ang-b.ang)))*c.len*b.len; double myres=pow(a.len, 2); cout<<res1<<" "<<res2<<" "<<pow(a.len, 2)<<endl; if(pow(a.len, 2)==pow(c.len, 2)+pow(b.len, 2)-2*cos(my_torad(c.ang-b.ang))*c.len*b.len)|| pow(a.len, 2)==pow(c.len, 2)+pow(b.len, 2)-2*cos(my_torad(180-(c.ang-b.ang)))*c.len*b.len)) { cout<<"ok"<<endl; return true; } else return false; }
int _tmain() { const int n=3;
piece* mypiece; mypiece=new piece[n]; for (int i=0; i<n; i++) { cout<<"Piece"<<i+1<<": "<<endl; cout<<"len="; cin>>mypiece[i].len; cout<<"ang="; cin>>mypiece[i].ang; cout<<endl; } if (mycheck(mypiece[0], mypiece[1], mypiece[2])) cout<<"yes"<<endl; else cout<<"no"<<endl; cout<<endl; system("pause"); return 0; }
|
|