座標を入力させる方法がわからない
一例として fgets()
と sscanf()
を用いて点Aと点Bの座標を読み込んで,線分ABの長さをコンソールに出力する記述例を下記に示します。
C
1#include <stdio.h>
2#include <stdlib.h>
3#include <math.h>
4
5#define MAX_LEN 100
6
7#define RSS(dx, dy) sqrt((dx) * (dx) + (dy) * (dy))
8#define DST(x1, y1, x2, y2) RSS((x1) - (x2), (y1) - (y2))
9
10int main(void)
11{
12 char s[MAX_LEN];
13 double ax, ay, bx, by;
14
15 ax = ay = bx = by = 0.0;
16 printf("Ax Ay = ");
17 fgets(s, MAX_LEN, stdin);
18 sscanf(s, "%lf %lf", &ax, &ay);
19 printf("Bx By = ");
20 fgets(s, MAX_LEN, stdin);
21 sscanf(s, "%lf %lf", &bx, &by);
22
23 if (ax == bx && ay == by) {
24 fprintf(stderr, "error: A and B are the same point.\n");
25 exit(1);
26 }
27
28 printf("AB = %f\n", DST(ax, ay, bx, by));
29
30 exit(0);
31}
sh
1> gcc main.c
2> ./a.out
3Ax Ay = 1 2
4Bx By = 4 6
5AB = 5.000000