#include <stdio.h>
#include <stdlib.h>
#include <math.h>
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) {
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;
if (scanf("%lf %lf", &p.
x, &p.
y) != 2) { 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+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4gICAKCnR5cGVkZWYgc3RydWN0IHsKICAgIGRvdWJsZSB4OwogICAgZG91YmxlIHk7Cn0gUG9pbnQ7CgpQb2ludCBzY2FuX3BvaW50KHZvaWQpOwpkb3VibGUgYXJlYV9vZihQb2ludCBwMSwgUG9pbnQgcDIpOwpkb3VibGUgY2lyY3VtZmVyZW5jZV9vZihQb2ludCBwMSwgUG9pbnQgcDIpOwoKaW50IG1haW4odm9pZCkgewogICAgUG9pbnQgcDEgPSBzY2FuX3BvaW50KCk7CiAgICBQb2ludCBwMiA9IHNjYW5fcG9pbnQoKTsKICAgIGRvdWJsZSBhcmVhID0gYXJlYV9vZihwMSwgcDIpOwogICAgZG91YmxlIGNpcmMgPSBjaXJjdW1mZXJlbmNlX29mKHAxLCBwMik7CiAgICBwcmludGYoIuW6p+aomeOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhOOAglxuIik7CiAgICBwcmludGYoIuW6p+aomTEgKCUuMmYsICUuMmYpXG4iLCBwMS54LCBwMS55KTsKICAgIHByaW50Zigi5bqn5qiZMiAoJS4yZiwgJS4yZilcbiIsIHAyLngsIHAyLnkpOwogICAgcHJpbnRmKCLpnaLnqY06ICUuMmZcbiIsIGFyZWEpOwogICAgcHJpbnRmKCLlkajlm7Ljga7plbfjgZU6ICUuMmZcbiIsIGNpcmMpOwoKICAgIHJldHVybiAwOwp9CgpQb2ludCBzY2FuX3BvaW50KHZvaWQpIHsKICAgIFBvaW50IHA7CiAgICBpZiAoc2NhbmYoIiVsZiAlbGYiLCAmcC54LCAmcC55KSAhPSAyKSB7CiAgICAgICAgcC54ID0gcC55ID0gMC4wOwogICAgfQogICAgcmV0dXJuIHA7Cn0KCmRvdWJsZSBhcmVhX29mKFBvaW50IHAxLCBQb2ludCBwMikgewogICAgZG91YmxlIHdpZHRoICA9IGZhYnMocDIueCAtIHAxLngpOwogICAgZG91YmxlIGhlaWdodCA9IGZhYnMocDIueSAtIHAxLnkpOwogICAgcmV0dXJuIHdpZHRoICogaGVpZ2h0Owp9Cgpkb3VibGUgY2lyY3VtZmVyZW5jZV9vZihQb2ludCBwMSwgUG9pbnQgcDIpIHsKICAgIGRvdWJsZSB3aWR0aCAgPSBmYWJzKHAyLnggLSBwMS54KTsKICAgIGRvdWJsZSBoZWlnaHQgPSBmYWJzKHAyLnkgLSBwMS55KTsKICAgIHJldHVybiAyLjAgKiAod2lkdGggKyBoZWlnaHQpOwp9Cg==