Площадь выпуклого прямоугольника - C (СИ)
Формулировка задачи:
. Площадь треугольника, заданного координатами своих вершин, находится по формуле
S = 0.5 * |x1y2 + x2y3 + x3y1 - x1y3 - x2y1 -x3y2|.
Используя функцию для вычисления площади треугольника, определить площадь выпуклого четырехугольника ABCD, заданного координатами своих вершин.
совершенно не понимаю как вызываются функции. да и программа после ввода координат х и у завершает работу
#include<conio.h> #include<math.h> #include<stdio.h> void main() { float x1,x2,x3,x4,y1,y2,y3,y4; float S3(int,int,int,int,int,int); float S4(int,int,int,int,int,int,int,int); puts("Vvedite koordinati verwini - x1"); scanf("%f",&x1); puts("Vvedite koordinati verwini - x2"); scanf("%f",&x2); puts("Vvedite koordinati verwini - x3"); scanf("%f",&x3); puts("Vvedite koordinati verwini - x4"); scanf("%f",&x4); puts("Vvedite koordinati verwini - y1"); scanf("%f",&x1); puts("Vvedite koordinati verwini - y2"); scanf("%f",&y2); puts("Vvedite koordinati verwini - y3"); scanf("%f",&y3); puts("Vvedite koordinati verwini - y4"); scanf("%f",&y4); getch(); } float S3(int x1, int x2,int x3, int y1, int y2, int y3) { int a = fabs(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2); float S3 = 0.5* a ; printf("S 3 = %f",S3); return S3; } float S4(int x1, int x2,int x3, int x4,int y1, int y2, int y3,int y4) { float S1=S3(x1,x2,x3,y1,y2,y3); float l1,l2,l3,S2; l1=sqrt(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2))); l2=sqrt(((x3-x2)*(x3-x2))+((y3-y2)*(y3-y2))); l3=sqrt(((x3-x1)*(x3-x1))+((y3-y1)*(y3-y1))); if ((l1>l2) && (l1>l3)) S2=S3(x4,x2,x3,y4,y2,y3); if ((l2>l1) && (l2>l3)) S2=S3(x4,x1,x3,y4,y1,y3); if ((l3>l1) && (l3>l2)) S2=S3(x4,x1,x2,y4,y1,y2); float S4=S1+S2; printf(" S4 = %f",S4); return S4; }
Решение задачи: «Площадь выпуклого прямоугольника»
textual
Листинг программы
#include<conio.h> #include<math.h> #include<stdio.h> //float s3,s4; void main() { int x1,x2,x3,x4,y1,y2,y3,y4; float s3,s4; float S3(int,int,int,int,int,int); float S4(int,int,int,int,int,int,int,int); puts("Vvedite koordinati verwini - x1"); scanf("%f",&x1); puts("Vvedite koordinati verwini - x2"); scanf("%f",&x2); puts("Vvedite koordinati verwini - x3"); scanf("%f",&x3); puts("Vvedite koordinati verwini - x4"); scanf("%f",&x4); puts("Vvedite koordinati verwini - y1"); scanf("%f",&x1); puts("Vvedite koordinati verwini - y2"); scanf("%f",&y2); puts("Vvedite koordinati verwini - y3"); scanf("%f",&y3); puts("Vvedite koordinati verwini - y4"); scanf("%f",&y4); s3=S3(x1,x2,x3,y1,y2,y3); s4=S4(x1,x2,x3,x4,y1,y2,y3,y4); printf("S3 = %.f\nS4 = %.f\n",s3,s4); getch(); } float S3(int x1, int x2,int x3, int y1, int y2, int y3) { int a = fabs(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2); float S3 = 0.5*a ; //printf("S 3 = %f",S3); return S3; } float S4(int x1, int x2,int x3, int x4,int y1, int y2, int y3,int y4) { float S1=S3(x1,x2,x3,y1,y2,y3); float l1,l2,l3,S2; l1=sqrt(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2))); l2=sqrt(((x3-x2)*(x3-x2))+((y3-y2)*(y3-y2))); l3=sqrt(((x3-x1)*(x3-x1))+((y3-y1)*(y3-y1))); if ((l1>l2) && (l1>l3)) S2=S3(x4,x2,x3,y4,y2,y3); if ((l2>l1) && (l2>l3)) S2=S3(x4,x1,x3,y4,y1,y3); if ((l3>l1) && (l3>l2)) S2=S3(x4,x1,x2,y4,y1,y2); float S4=S1+S2; //printf(" S4 = %f",S4); return S4; }
Объяснение кода листинга программы
В этом коде выполняется вычисление площади выпуклого прямоугольника по его вершинам с использованием формулы Герона. Список действий:
- Ввод координат вершин прямоугольника (x1,y1) и (x2,y2) с помощью функции scanf.
- Вычисление площади треугольника по формуле Герона с помощью функции S3, которая принимает координаты вершин треугольника (x1,y1), (x2,y2), (x3,y3) и возвращает его площадь.
- Вычисление длин сторон треугольника (x1-x2), (x2-x3), (x3-x1), (y1-y2), (y2-y3), (y3-y1) с помощью функции sqrt из библиотеки math.h.
- Вычисление площади треугольника по формуле Герона с помощью функции S4, которая принимает координаты вершин прямоугольника (x1,y1), (x2,y2), (x3,y3), (x4,y4) и возвращает его площадь.
- Вывод значений площадей S3 и S4 с помощью функции printf.
- Ввод значения 0 для завершения программы с помощью функции getch. Примечание: значения переменных x1,x2,x3,x4,y1,y2,y3,y4,s3,s4 не выводились на экран в данном коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д