#include <stdio.h>
#include <stdlib.h>
#include <math.h>   // fabs を使うために必要
 
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");  
    Point p1 = scan_point();
 
    Point p2 = scan_point();
 
    double area = area_of(p1, p2);
    double circ = circumference_of(p1, p2);
 
    printf("座標1 (%.2f, %.2f)\n", p1.
x, p1.
y);     printf("座標2 (%.2f, %.2f)\n", p2.
x, p2.
y);     printf("周囲の長さ: %.2f\n", circ
);  
    return 0;
}
 
Point scan_point(void) {
    Point p;
    printf("座標を入力してください (X Y): ");     if (scanf("%lf %lf", &p.
x, &p.
y) != 2) {         fprintf(stderr
, "入力が正しくありません。0,0 を返します。\n");         p.x = p.y = 0.0;
    }
    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.0 * (width + height);
}
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4gICAvLyBmYWJzIOOCkuS9v+OBhuOBn+OCgeOBq+W/heimgQoKdHlwZWRlZiBzdHJ1Y3QgewogICAgZG91YmxlIHg7CiAgICBkb3VibGUgeTsKfSBQb2ludDsKCi8qIOmWouaVsOODl+ODreODiOOCv+OCpOODlyAqLwpQb2ludCBzY2FuX3BvaW50KHZvaWQpOwpkb3VibGUgYXJlYV9vZihQb2ludCBwMSwgUG9pbnQgcDIpOwpkb3VibGUgY2lyY3VtZmVyZW5jZV9vZihQb2ludCBwMSwgUG9pbnQgcDIpOwoKaW50IG1haW4odm9pZCkgewogICAgcHJpbnRmKCLlt6bkuIrpmoXjgajlj7PkuIvpmoXjga7luqfmqJnjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIJcbiIpOwoKICAgIHByaW50Zigi5bem5LiK6ZqF44Gu5bqn5qiZOlxuIik7CiAgICBQb2ludCBwMSA9IHNjYW5fcG9pbnQoKTsKCiAgICBwcmludGYoIuWPs+S4i+maheOBruW6p+aomTpcbiIpOwogICAgUG9pbnQgcDIgPSBzY2FuX3BvaW50KCk7CgogICAgZG91YmxlIGFyZWEgPSBhcmVhX29mKHAxLCBwMik7CiAgICBkb3VibGUgY2lyYyA9IGNpcmN1bWZlcmVuY2Vfb2YocDEsIHAyKTsKCiAgICBwcmludGYoIuW6p+aomTEgKCUuMmYsICUuMmYpXG4iLCBwMS54LCBwMS55KTsKICAgIHByaW50Zigi5bqn5qiZMiAoJS4yZiwgJS4yZilcbiIsIHAyLngsIHAyLnkpOwogICAgcHJpbnRmKCLpnaLnqY06ICUuMmZcbiIsIGFyZWEpOwogICAgcHJpbnRmKCLlkajlm7Ljga7plbfjgZU6ICUuMmZcbiIsIGNpcmMpOwoKICAgIHJldHVybiAwOwp9CgpQb2ludCBzY2FuX3BvaW50KHZvaWQpIHsKICAgIFBvaW50IHA7CiAgICBwcmludGYoIuW6p+aomeOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhCAoWCBZKe+8miAiKTsKICAgIGlmIChzY2FuZigiJWxmICVsZiIsICZwLngsICZwLnkpICE9IDIpIHsKICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIuWFpeWKm+OBjOato+OBl+OBj+OBguOCiuOBvuOBm+OCk+OAgjAsMCDjgpLov5TjgZfjgb7jgZnjgIJcbiIpOwogICAgICAgIHAueCA9IHAueSA9IDAuMDsKICAgIH0KICAgIHJldHVybiBwOwp9Cgpkb3VibGUgYXJlYV9vZihQb2ludCBwMSwgUG9pbnQgcDIpIHsKICAgIGRvdWJsZSB3aWR0aCAgPSBmYWJzKHAyLnggLSBwMS54KTsKICAgIGRvdWJsZSBoZWlnaHQgPSBmYWJzKHAyLnkgLSBwMS55KTsKICAgIHJldHVybiB3aWR0aCAqIGhlaWdodDsKfQoKZG91YmxlIGNpcmN1bWZlcmVuY2Vfb2YoUG9pbnQgcDEsIFBvaW50IHAyKSB7CiAgICBkb3VibGUgd2lkdGggID0gZmFicyhwMi54IC0gcDEueCk7CiAgICBkb3VibGUgaGVpZ2h0ID0gZmFicyhwMi55IC0gcDEueSk7CiAgICByZXR1cm4gMi4wICogKHdpZHRoICsgaGVpZ2h0KTsKfQ==