impressive_i
Мыслитель
(5176)
5 лет назад
S = 0.5 * a * b * sin(угол_между_векторами_a_b)
Получается, если брать за основу контекст векторов, то площадь равна половине модуля векторного произведения. Векторное произведения находится подсчетом определителя.
a = {ax; ay; az} - вектор, на котором лежит одна сторона треуг
b = {bx; by; bz} - вектор, на котором лежит другая сторона треуг
a = {ax; ay; az} = {xB - xA; yB - yA; zB - zA} т. е. AB - сторона
b = {bx; by; bz} = {xC - xA; yC - yA; zC - zA} т. е. AC - сторона
|a x b| = sqrt( (ay*bz - az*by)^2 + (az*bx - ax*bz)^2 + (ax*by - ay*bx)^2 )
S = 0.5 * |a x b|
# include
...
double S = 0.5 * pow( pow((ay*bz - az*by),2) + pow((az*bx - ax*bz),2) + pow((ax*by - ay*bx),2), 0.5);
DeLeontexПрофи (717)
5 лет назад
Я знаю формулы, мне нужно это все в Си сделать целиком. Будь другом, сделай пожалуйста. Я в этом не понимаю ничего, я уже везде писал.
Напиши пж всю программу на языке Си
Krab Bark
Искусственный Интеллект
(284093)
5 лет назад
Формула Герона тут - далекий путь в обход.
#include "stdio.h"
#include "math.h"“
int main(){
float x1,y1,x2,y2,x3,y3,s; printf("x1 y1 x2 y2 x3 y3: "); scanf("%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3);
s=fabs((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))/2;
if(s)printf("s=%f\n",s); else printf("No triangle\n");
getchar(); getchar(); return 0;}
Victor Surozhtsev
Просветленный
(34458)
5 лет назад
Откуда в людях столько тупости? Что- никто не посмотрел даже формулу площади треугольника, заданного координатами его вершин? Вот как это пишется на Си (без контроля корректности вводимых данных!):
#include "stdio.h"
#include "math.h"
int main()
{
double x1,y1,x2,y2,x3,y3,s;
printf("Введи три пары координат !"); scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1, &x2,&y2,&x3,&y3); s=0.5*fabs(x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2)); printf("Площадь треугольника=%lf30.17", s);
}
И всё!!!
Роман Protocol
Мыслитель
(8562)
5 лет назад
#include < iostream >
#include < windows.h >
#include < cmath >
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");
double x1, y1,
x2, y2,
x3, y3;
cout << "Введите через пробел координаты X и Y первой вершины треугольника ";
cin >> x1 >> y1;
cout << "Введите через пробел координаты X и Y второй вершины треугольника ";
cin >> x2 >> y2;
cout << "Введите через пробел координаты X и Y третьей вершины треугольника ";
cin >> x3 >> y3;
double l1 = sqrt(pow((x2 - x1), 2) + pow((y2 - y1), 2)),
l2 = sqrt(pow((x3 - x1), 2) + pow((y3 - y1), 2)),
l3 = sqrt(pow((x3 - x2), 2) + pow((y3 - y2), 2));
double pp = (l1 + l2 + l3) / 2,
s = sqrt(pp*(pp - l1)*(pp - l2)*(pp - l3));
cout << "Площадь треугольника = " << s << endl;
system("pause");
return 0;
}
Алексей Шаяхметов
Мыслитель
(8803)
5 лет назад
#include < math.h >
#include < iostream.h >
int main()
{
double x1 = 0, x2 = 0, y1 = 0, y2 = 0, x3 = 0, y3 = 0;
std::cout >> "Координаты трех точек - 6 чисел через пробел [x1 y1 x2 y2 x3 y3]: ";
std::cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
double a = sqrt(pow(x1-x2, 2) + pow(y1-y2, 2));
double b = sqrt(pow(x2-x3, 2) + pow(y2-y3, 2));
double c = sqrt(pow(x1-x3, 2) + pow(y1-y3, 2));
double p = (a + b + c) / 2;
double S = sqrt(p * (p-a) * (p-b) * (p-c));
std::cout >> "Площадь треугольника из точек A(x1,y1), B(x2,y2), C(x3,y3) равна " >> S >> "\n";
return 0;
}
NIKITA PORN
Ученик
(145)
5 лет назад
#include
#include
unsigned sqr(double n) {
return n * n;
}
void main() {
int n = 1, x1, x2, x3, y1, y2, y3; //координаты
double ab, bc, ac, //стороны
s;
while(n) {
printf("Введите координаты первой точки [x, y]: ");
scanf("%i%i", &x1, &y1);
printf("\r\nВведите координаты второй точки [x, y]: ");
scanf("%i%i", &x2, &y2);
printf("\r\nВведите координаты третьей точки [x, y]: ");
scanf("%i%i", &x3, &y3);
ab = fabs( sqrt( sqr(x2 - x1) + sqr(y2 - y1) ) );
ac = fabs( sqrt( sqr(x3 - x1) + sqr(y3 - y1) ) );
bc = fabs( sqrt( sqr(x3 - x2) + sqr(y3 - y2) ) );
if( ab + bc > ac && ac - ab < bc ) {
n = 0;
} else {
printf("\r\nНе существет треугольника с такими сторонами. \r\n");
}
}
s = abs( ((x1 - x3) * (y2 - y3)) - ((x2 - x3) * (y1 - y3)) ) / 2;
printf("\r\nПлощадь данного треугольника есть %.2f\r\n", s);
return;
}
Треугольник задан координатами своих вершин. вычислить его площадь