Proc5. Описать процедуру RectPS($$x_1$$, $$y_1$$, $$x_2$$, $$y_2$$, $$P$$, $$S$$), вычисляющую периметр $$P$$ и площадь $$S$$ прямоугольника со сторонами, параллельными осям координат, по координатам $$(x1, y1), (x2, y2)$$ его противоположных вершин ($$x1$$, $$y1$$, $$x2$$, $$y2$$ — входные, $$P$$ и $$S$$ — выходные параметры вещественного типа). С помощью этой процедуры найти периметры и площади трех прямоугольников с данными противоположными вершинами.
Формулы:
$$P=2*(a+b)$$
$$S=a*b $$
$$ a=|x_1-x_2| $$
$$ b=|y_1-y_2| $$
$$ P=2*(|x_1-x_2|+|y_1-y_2|) $$
$$ S=|x_1-x_2|*|y_1-y_2| $$
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <stdio.h> #include <math.h> void rectps (float x1, float y1, float x2, float y2, float *p, float *s){ *p=2*(abs(x1-x2)+abs(y1-y2)); *s=abs(x1-x2)*abs(y1-y2); } int main(void) { int i; for(i=1;i<=3;++i){ float x1,y1,x2,y2; printf("x1:"); scanf("%f", &x1); printf("y1:"); scanf("%f", &y1); printf("x2:"); scanf("%f", &x2); printf("y2:"); scanf("%f", &y2); float s,p; rectps(x1,y1,x2,y2, &p, &s); printf("P: %f\nS: %f\n",p,s); } return 0; } |
Другие задачи из раздела Proc можно посмотреть здесь.
Комментарии: