вершин. Функция возвращает 1 или 2 в зависимости от того, какой треугольник больше. Если треугольники равновелики, возвращает 1.
Input
Со стандартного устройства ввода вводится шесть пар чисел через пробел (не обязательно целых) – координаты вершин треугольника (сначала три вершины первого, затем три вершины второго). Числа не превышают 1000 по абсолютной величине.
Output
Нужно выдать на стандартное устройство 1 или 2 в зависимости от того, какой треугольник больше.
Sample Input
1 1 1 3 4 1 1 1 1 6 7 1
Sample Output
2
вот собственно и сама прога:
#include <stdio.h>
#include <math.h>
int square (int xA,int xB,int xC,int yA,int yB,int yC,int yA1,int yB1,int yC1,int xC1,int xA1,int xB1)
{int AB, BC, AC, A1C1, B1C1, A1B1, s1, s2;
double p, p1;
AB=((xA-xB)*(xA-xB)-(yA-yB)*(yA-yB))^(1/2);
AC=((xA-xC)*(xA-xC)-(yA-yC)*(yA-yC))^(1/2);
BC=((xB-xC)*(xB-xC)-(yB-yC)*(yB-yC))^(1/2);
A1B1=((xA1-xB1)*(xA1-xB1)-(yA1-yB1)*(yA1-yB1))^(1/2);
A1C1=((xA1-xC1)*(xA1-xC1)-(yA1-yC1)*(yA1-yC1))^(1/2);
B1C1=((xB1-xC1)*(xB1-xC1)-(yB1-yC1)*(yB1-yC1))^(1/2);
p=(AB+AC+BC)/2.0;
p1=(A1B1+A1C1+B1C1)/2.0;
s1=(p*(p-AB)*(p-BC)*(p-AC))^(1/2);
s2=(p*(p-A1B1)*(p-B1C1)*(p-A1C1))^(1/2);
if (s1>s2) return 1;
if (s1=s2) return 1;
if (s1
Другие языки программирования и технологии
не очень сложная прога на c++ не робит: Написать функцию, сравнивающую площадь двух треугольников, по координатам их вер
#include<iostream>
using namespace std;
int s(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4,float x5,float y5,float x6,float y6){
return ((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1)>(x5-x4)*(y6-y4)-(x6-x4)*(y5-y4))+1;}
int main(){float x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6;
cout<< "x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 x6 y6: "; cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4>>x5>>y5>>x6>>y6;
cout<< s(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6)<< endl; cin.get(); cin.get();}
Это вся программа. Простую формулу вычисления площади треугольника по координатам его вершин можно найти хоть в Википедии, незачем изобретать велосипед. Кстати, наплевать, какого размера числа, хоть квинтиллионы :)
using namespace std;
int s(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4,float x5,float y5,float x6,float y6){
return ((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1)>(x5-x4)*(y6-y4)-(x6-x4)*(y5-y4))+1;}
int main(){float x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6;
cout<< "x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 x6 y6: "; cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4>>x5>>y5>>x6>>y6;
cout<< s(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6)<< endl; cin.get(); cin.get();}
Это вся программа. Простую формулу вычисления площади треугольника по координатам его вершин можно найти хоть в Википедии, незачем изобретать велосипед. Кстати, наплевать, какого размера числа, хоть квинтиллионы :)
Ренат Хайыпов
я обновил вопрос, места не хватило и майл не робил)))
Саша Кос
Сначала написал вычисления просто в main, потом переделал в использование отдельной функции - вроде бы так просили.
1. А что, все координаты и площади целые? Дробных быть не может?
2. ^ в C++ означает не возведение в степень. Корень - sqrt.
3. Формула неправильная.
2. ^ в C++ означает не возведение в степень. Корень - sqrt.
3. Формула неправильная.
Ренат Хайыпов
я обновил вопрос, места не хватило и майл не робил)))
ээ - откуда в это чудо конструкцию взяли )^(1/2); (в матлабе точно так но не в с++)
и так 1 данные всеже проще передовать в массиве
float square(float *points){
float a[3],p;
if (sizeof(points)/sizeof(points [ 0 ])!=12) then return 0;
else{
for(int i=0 ; i < 3; i++) a[ i ] =sqrt(sqr(points[ i ]-points[i+6])+sqr(points [ i+1 ]-points [ i+7 ] ))
p=a[ 0 ]+a[ 1 ]+a[ 2 ];
return sqrt(p*(p-a[ 0 ])*(p-a[ 1 ])*(p - a [ 2 ]));
}
}
и так 1 данные всеже проще передовать в массиве
float square(float *points){
float a[3],p;
if (sizeof(points)/sizeof(points [ 0 ])!=12) then return 0;
else{
for(int i=0 ; i < 3; i++) a[ i ] =sqrt(sqr(points[ i ]-points[i+6])+sqr(points [ i+1 ]-points [ i+7 ] ))
p=a[ 0 ]+a[ 1 ]+a[ 2 ];
return sqrt(p*(p-a[ 0 ])*(p-a[ 1 ])*(p - a [ 2 ]));
}
}
Ренат Хайыпов
я же сказал не знаю как в кв возводить xDD
ну для начала объявите ab,bc и т. д. типа double... почему? потому что у вас написано что могут вводиться вещественные числа.. . во вторых надо организовать проверку каждого числа - больше ли оно 1000, т. е. можно написать еще одну функцию, которая вызывается из текущей, сравнивает число с 1000 и если меньше - возвращает истину, а если больше - ложь.. . ну это я думаю ясно.. . и последнее - зачем делать три сравнения, если можно обойтись одним? if (s1 > s2 ) return 1; else return 2;
ну а теперь по ошибке.. . что именно выдает? почему не работает, в какой строке и т. д.
ну а теперь по ошибке.. . что именно выдает? почему не работает, в какой строке и т. д.
Ренат Хайыпов
я обновил вопрос, места не хватило и майл не робил)))
Похожие вопросы
- Треугольник задан координатами своих вершин. вычислить его площадь. На языке СИ!
- Нужно написать программу, на нахождения бессектрисы треугольника, если пользователем задано длину плз напишите прогу С++
- Как написать функцию 1+4=5 в C\с++
- НОК 2-ух чисел - C++ Помогите, люди добрые. Как написать прогу на C++, которая вычисляет НОК двух чисел
- Помогите пж написать прогу на c++ макс простым языком. Расположить символы в обратном порядке в одномерном массиве
- dev c++. помогите плз сделать задачу найти наибольшую высоту треугольника из сторонами a,b,c
- Вывести на печать длину наибольшей медианы треугольника, заданного координатами вершин.
- c++ возврат char из функции
- С++.Дан одномерный числовой массив. Написать функции.
- DEV C++ отсутствуют некоторые НУЖНЫЕ функции