#include <stdio.h>
#include <math.h> // fabs()を使うため
// Point構造体の定義
typedef struct {
double x;
double y;
} Point;
// 関数プロトタイプ宣言
Point scan_point(int n);
double area_of(Point p1, Point p2);
double circumference_of(Point p1, Point p2);
// メイン関数
int main(void) {
Point p1, p2;
printf("左上隅と右下隅の座標を入力してください。\n");
p1 = scan_point(1);
p2 = scan_point(2);
double area = area_of(p1, p2);
double circum = circumference_of(p1, p2);
printf("周囲の長さ:%.2f\n", circum
);
return 0;
}
// ---- 座標を入力してPoint構造体を返す関数 ----
Point scan_point(int n) {
Point p;
scanf("%lf %lf", &p.
x, &p.
y); printf("座標%d (%.2f, %.2f)\n", n
, p.
x, p.
y); return p;
}
// ---- 面積を計算する関数 ----
double area_of(Point p1, Point p2) {
double width
= fabs(p2.
x - p1.
x); double height
= fabs(p2.
y - p1.
y); return width * height;
}
// ---- 周の長さを計算する関数 ----
double circumference_of(Point p1, Point p2) {
double width
= fabs(p2.
x - p1.
x); double height
= fabs(p2.
y - p1.
y); return 2 * (width + height);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+ICAgLy8gZmFicygp44KS5L2/44GG44Gf44KBCgovLyBQb2ludOani+mAoOS9k+OBruWumue+qQp0eXBlZGVmIHN0cnVjdCB7CiAgICBkb3VibGUgeDsKICAgIGRvdWJsZSB5Owp9IFBvaW50OwoKLy8g6Zai5pWw44OX44Ot44OI44K/44Kk44OX5a6j6KiAClBvaW50IHNjYW5fcG9pbnQoaW50IG4pOwpkb3VibGUgYXJlYV9vZihQb2ludCBwMSwgUG9pbnQgcDIpOwpkb3VibGUgY2lyY3VtZmVyZW5jZV9vZihQb2ludCBwMSwgUG9pbnQgcDIpOwoKLy8g44Oh44Kk44Oz6Zai5pWwCmludCBtYWluKHZvaWQpIHsKICAgIFBvaW50IHAxLCBwMjsKCiAgICBwcmludGYoIuW3puS4iumaheOBqOWPs+S4i+maheOBruW6p+aomeOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhOOAglxuIik7CgogICAgcDEgPSBzY2FuX3BvaW50KDEpOwogICAgcDIgPSBzY2FuX3BvaW50KDIpOwoKICAgIGRvdWJsZSBhcmVhID0gYXJlYV9vZihwMSwgcDIpOwogICAgZG91YmxlIGNpcmN1bSA9IGNpcmN1bWZlcmVuY2Vfb2YocDEsIHAyKTsKCiAgICBwcmludGYoIumdouepje+8miUuMmZcbiIsIGFyZWEpOwogICAgcHJpbnRmKCLlkajlm7Ljga7plbfjgZXvvJolLjJmXG4iLCBjaXJjdW0pOwoKICAgIHJldHVybiAwOwp9CgovLyAtLS0tIOW6p+aomeOCkuWFpeWKm+OBl+OBplBvaW505qeL6YCg5L2T44KS6L+U44GZ6Zai5pWwIC0tLS0KUG9pbnQgc2Nhbl9wb2ludChpbnQgbikgewogICAgUG9pbnQgcDsKICAgIHNjYW5mKCIlbGYgJWxmIiwgJnAueCwgJnAueSk7CiAgICBwcmludGYoIuW6p+aomSVkICglLjJmLCAlLjJmKVxuIiwgbiwgcC54LCBwLnkpOwogICAgcmV0dXJuIHA7Cn0KCi8vIC0tLS0g6Z2i56mN44KS6KiI566X44GZ44KL6Zai5pWwIC0tLS0KZG91YmxlIGFyZWFfb2YoUG9pbnQgcDEsIFBvaW50IHAyKSB7CiAgICBkb3VibGUgd2lkdGggPSBmYWJzKHAyLnggLSBwMS54KTsKICAgIGRvdWJsZSBoZWlnaHQgPSBmYWJzKHAyLnkgLSBwMS55KTsKICAgIHJldHVybiB3aWR0aCAqIGhlaWdodDsKfQoKLy8gLS0tLSDlkajjga7plbfjgZXjgpLoqIjnrpfjgZnjgovplqLmlbAgLS0tLQpkb3VibGUgY2lyY3VtZmVyZW5jZV9vZihQb2ludCBwMSwgUG9pbnQgcDIpIHsKICAgIGRvdWJsZSB3aWR0aCA9IGZhYnMocDIueCAtIHAxLngpOwogICAgZG91YmxlIGhlaWdodCA9IGZhYnMocDIueSAtIHAxLnkpOwogICAgcmV0dXJuIDIgKiAod2lkdGggKyBoZWlnaHQpOwp9Cg==