#include <stdio.h>
#include <math.h>
// X座標とY座標で構成されるPoint型構造体
typedef struct {
double x;
double y;
} Point;
// 関数のプロトタイプ宣言
Point scan_point(void);
double area_of(Point p1, Point p2);
double circumference_of(Point p1, Point p2);
int main(void) {
printf("左上隅と右下隅の座標を入力してください。\n");
// 座標1(左上隅)と座標2(右下隅)の入力
Point p1 = scan_point();
Point p2 = scan_point();
// 面積と周囲の長さの計算
double area = area_of(p1, p2);
double circumference = circumference_of(p1, p2);
// 結果の出力(小数点以下2桁まで)
printf("座標1(%.2f, %.2f)\n", p1.
x, p1.
y); printf("座標2(%.2f, %.2f)\n", p2.
x, p2.
y); printf("周囲の長さ:%.2f\n", circumference
);
return 0;
}
Point scan_point(void) {
Point p;
scanf("%lf %lf", &p.
x, &p.
y); return p;
}
double area_of(Point p1, Point p2) {
double width
= fabs(p1.
x - p2.
x); double height
= fabs(p1.
y - p2.
y); return width * height;
}
double circumference_of(Point p1, Point p2) {
double width
= fabs(p1.
x - p2.
x); double height
= fabs(p1.
y - p2.
y); return 2.0 * (width + height);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgovLyBY5bqn5qiZ44GoWeW6p+aomeOBp+ani+aIkOOBleOCjOOCi1BvaW505Z6L5qeL6YCg5L2TCnR5cGVkZWYgc3RydWN0IHsKICAgIGRvdWJsZSB4OwogICAgZG91YmxlIHk7Cn0gUG9pbnQ7CgovLyDplqLmlbDjga7jg5fjg63jg4jjgr/jgqTjg5flrqPoqIAKUG9pbnQgc2Nhbl9wb2ludCh2b2lkKTsKZG91YmxlIGFyZWFfb2YoUG9pbnQgcDEsIFBvaW50IHAyKTsKZG91YmxlIGNpcmN1bWZlcmVuY2Vfb2YoUG9pbnQgcDEsIFBvaW50IHAyKTsKCmludCBtYWluKHZvaWQpIHsKICAgIHByaW50Zigi5bem5LiK6ZqF44Go5Y+z5LiL6ZqF44Gu5bqn5qiZ44KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GE44CCXG4iKTsKICAgIAogICAgLy8g5bqn5qiZMe+8iOW3puS4iumahe+8ieOBqOW6p+aomTLvvIjlj7PkuIvpmoXvvInjga7lhaXlipsKICAgIFBvaW50IHAxID0gc2Nhbl9wb2ludCgpOwogICAgUG9pbnQgcDIgPSBzY2FuX3BvaW50KCk7CiAgICAKICAgIC8vIOmdouepjeOBqOWRqOWbsuOBrumVt+OBleOBruioiOeulwogICAgZG91YmxlIGFyZWEgPSBhcmVhX29mKHAxLCBwMik7CiAgICBkb3VibGUgY2lyY3VtZmVyZW5jZSA9IGNpcmN1bWZlcmVuY2Vfb2YocDEsIHAyKTsKICAgIAogICAgLy8g57WQ5p6c44Gu5Ye65Yqb77yI5bCP5pWw54K55Lul5LiLMuahgeOBvuOBp++8iQogICAgcHJpbnRmKCLluqfmqJkxKCUuMmYsICUuMmYpXG4iLCBwMS54LCBwMS55KTsKICAgIHByaW50Zigi5bqn5qiZMiglLjJmLCAlLjJmKVxuIiwgcDIueCwgcDIueSk7CiAgICBwcmludGYoIumdouepjTolLjJmXG4iLCBhcmVhKTsKICAgIHByaW50Zigi5ZGo5Zuy44Gu6ZW344GVOiUuMmZcbiIsIGNpcmN1bWZlcmVuY2UpOwogICAgCiAgICByZXR1cm4gMDsKfQoKUG9pbnQgc2Nhbl9wb2ludCh2b2lkKSB7CiAgICBQb2ludCBwOwogICAgc2NhbmYoIiVsZiAlbGYiLCAmcC54LCAmcC55KTsKICAgIHJldHVybiBwOwp9Cgpkb3VibGUgYXJlYV9vZihQb2ludCBwMSwgUG9pbnQgcDIpIHsKICAgIGRvdWJsZSB3aWR0aCA9IGZhYnMocDEueCAtIHAyLngpOwogICAgZG91YmxlIGhlaWdodCA9IGZhYnMocDEueSAtIHAyLnkpOwogICAgcmV0dXJuIHdpZHRoICogaGVpZ2h0Owp9Cgpkb3VibGUgY2lyY3VtZmVyZW5jZV9vZihQb2ludCBwMSwgUG9pbnQgcDIpIHsKICAgIGRvdWJsZSB3aWR0aCA9IGZhYnMocDEueCAtIHAyLngpOwogICAgZG91YmxlIGhlaWdodCA9IGZhYnMocDEueSAtIHAyLnkpOwogICAgcmV0dXJuIDIuMCAqICh3aWR0aCArIGhlaWdodCk7Cn0=