Найти сумму площадей двух треугольников - C (СИ)
Формулировка задачи:
Необходимо найти сумму площадей 2-х треугольников. Задаются координаты вершины, далее находятся стороны как разность координат и по формуле Герона находим площадь. По идее нахождение сторон нужно сделать через указатель на функцию) Поправте плз. Выдает ошибку error C2440: '=' : cannot convert from 'float (__cdecl *)(float,float,float,float)' to 'float'
1> There is no context in which this conversion is possible на нахождении s1 u s2
завтра сдавать((
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include "conio.h"
float dl(float a, float b, float c, float d);
//для нахождения длины стороны. a,b,c,d координаты вершин
float S(float a1, float b1, float a2,float b2, float a3, float b3, float (*f)(float,float,float,float));
//находим площадь.a1,a2,a3,b1,b2,b3 координаты точек
int _tmain()
{
float s,s1,s2,x1,x2,x3,x4,x5,x6,y1,y2,y3,y4,y5,y6;
printf("Введите координаты 1-го треугольника");
scanf_s("%f %f %f %f %f %f",&x1,&y1,&x2,&y2,&x3,&y3);
printf("Координаты: %f %f %f %f %f %f",x1,y1,x2,y2,x3,y3);
printf("Введите координаты 2-го треугольника");
scanf_s("%f %f %f %f %f %f",&x4,&y4,&x5,&y5,&x6,&y6);
printf("Координаты: %f %f %f %f %f %f",x4,y4,x5,y5,x6,y6);
s1=(x1,y1,x2,y2,x3,y3,dl);//находим площадь 1-го треугольника
s2=(x4,y4,x5,y5,x6,y6,dl);//второго
printf("сумма равна %f",s1+s2);
getch();
return 0
}
float dl(float a, float b, float c, float d)
{
return sqrt((a-b)*(a-b)+(c-d)*(c-d));
}
float S(float a1, float b1, float a2,float b2, float a3, float b3, float (*f)(float,float,float,float))
{
float l1,l2,l3,p,s;
l1=f(a1,b1,a2,b2);//находим длину стороны
l2=f(a2,b2,a3,b3);
l3=f(a3,b3,a1,b1);
p=(l1+l2+l3)/2;//полупериметр
s=sqrt(p*(p-l1)*(p-l2)*(p-l3));// площадь по формуле Герона
return s;
}Решение задачи: «Найти сумму площадей двух треугольников»
textual
Листинг программы
s1=S(x1,y1,x2,y2,x3,y3,dl);//находим площадь 1-го треугольника s2=S(x4,y4,x5,y5,x6,y6,dl);//второго