#include <stdio.h>
#include <math.h>
// 1. Point型構造体の定義
typedef struct {
double x;
double y;
} Point;
// 2. 関数のプロトタイプ宣言
Point scan_point(void);
double area_of(Point p1, Point p2);
double circumference_of(Point p1, Point p2);
// 3. main関数
int main(void) {
Point p1, p2;
double area, circumference;
printf("左上隅と右下隅の座標を入力してください\n"); p1 = scan_point();
p2 = scan_point();
area = area_of(p1, p2);
circumference = circumference_of(p1, p2);
printf("周辺の長さ: %.2lf\n", circumference
);
return 0;
}
// 4. 各関数の本体(中身)
// X座標とY座標を入力して、そのPoint構造体の変数を返す関数
Point scan_point(void) {
Point p;
// 警告対策として、scanfの戻り値を判定(またはキャスト)しています
if (scanf("%lf", &p.
x)) {} if (scanf("%lf", &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.0 * (width + height);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgovLyAxLiBQb2ludOWei+ani+mAoOS9k+OBruWumue+qQp0eXBlZGVmIHN0cnVjdCB7CiAgICBkb3VibGUgeDsKICAgIGRvdWJsZSB5Owp9IFBvaW50OwoKLy8gMi4g6Zai5pWw44Gu44OX44Ot44OI44K/44Kk44OX5a6j6KiAClBvaW50IHNjYW5fcG9pbnQodm9pZCk7CmRvdWJsZSBhcmVhX29mKFBvaW50IHAxLCBQb2ludCBwMik7CmRvdWJsZSBjaXJjdW1mZXJlbmNlX29mKFBvaW50IHAxLCBQb2ludCBwMik7CgovLyAzLiBtYWlu6Zai5pWwCmludCBtYWluKHZvaWQpIHsKICAgIFBvaW50IHAxLCBwMjsKICAgIGRvdWJsZSBhcmVhLCBjaXJjdW1mZXJlbmNlOwogICAgCiAgICBwcmludGYoIuW3puS4iumaheOBqOWPs+S4i+maheOBruW6p+aomeOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhFxuIik7CiAgICBwMSA9IHNjYW5fcG9pbnQoKTsKICAgIHAyID0gc2Nhbl9wb2ludCgpOwogICAgCiAgICBhcmVhID0gYXJlYV9vZihwMSwgcDIpOwogICAgY2lyY3VtZmVyZW5jZSA9IGNpcmN1bWZlcmVuY2Vfb2YocDEsIHAyKTsKICAgIAogICAgcHJpbnRmKCLpnaLnqY06ICUuMmxmXG4iLCBhcmVhKTsKICAgIHByaW50Zigi5ZGo6L6644Gu6ZW344GVOiAlLjJsZlxuIiwgY2lyY3VtZmVyZW5jZSk7CiAgCiAgICByZXR1cm4gMDsKfQoKLy8gNC4g5ZCE6Zai5pWw44Gu5pys5L2T77yI5Lit6Lqr77yJCgovLyBY5bqn5qiZ44GoWeW6p+aomeOCkuWFpeWKm+OBl+OBpuOAgeOBneOBrlBvaW505qeL6YCg5L2T44Gu5aSJ5pWw44KS6L+U44GZ6Zai5pWwClBvaW50IHNjYW5fcG9pbnQodm9pZCkgewogICAgUG9pbnQgcDsKICAgIC8vIOitpuWRiuWvvuetluOBqOOBl+OBpuOAgXNjYW5m44Gu5oi744KK5YCk44KS5Yik5a6a77yI44G+44Gf44Gv44Kt44Oj44K544OI77yJ44GX44Gm44GE44G+44GZCiAgICBpZiAoc2NhbmYoIiVsZiIsICZwLngpKSB7fQogICAgaWYgKHNjYW5mKCIlbGYiLCAmcC55KSkge30KICAgIHJldHVybiBwOyAvLyDjgrvjg5/jgrPjg63jg7Plv5jjgozjgpLkv67mraPjgZfjgb7jgZfjgZ8KfQoKLy8g6Z2i56mN44KS6KiI566X44GX44Gm6L+U44GZ6Zai5pWwCmRvdWJsZSBhcmVhX29mKFBvaW50IHAxLCBQb2ludCBwMikgewogICAgZG91YmxlIHdpZHRoID0gZmFicyhwMi54IC0gcDEueCk7CiAgICBkb3VibGUgaGVpZ2h0ID0gZmFicyhwMi55IC0gcDEueSk7CiAgICByZXR1cm4gd2lkdGggKiBoZWlnaHQ7Cn0KCi8vIOWRqOWbsuOBrumVt+OBleOCkuioiOeul+OBl+OBpui/lOOBmemWouaVsApkb3VibGUgY2lyY3VtZmVyZW5jZV9vZihQb2ludCBwMSwgUG9pbnQgcDIpIHsKICAgIGRvdWJsZSB3aWR0aCA9IGZhYnMocDIueCAtIHAxLngpOwogICAgZG91YmxlIGhlaWdodCA9IGZhYnMocDIueSAtIHAxLnkpOwogICAgcmV0dXJuIDIuMCAqICh3aWR0aCArIGhlaWdodCk7Cn0KCg==