多了圓。
算點到圓心的距離即可。
/* ACM 477 * mythnc * 2011/10/22 12:19:02 * run time: 0.012 */ #include <stdio.h> #define IN 1 #define OUT 0 #define CIR 1 #define REC 0 #define MAX 10 /* DISTANCE: calculate the range of (x, y) and center of cir */ #define DISTANCE(x, y, x1, y1) (x - x1) * (x - x1) + (y - y1) * (y - y1) /* SQUARE: calculate x^2 */ #define SQUARE(x) x * x int main(void) { double pic[MAX][4], x, y; /* f: number of pic, k: number of (x, y) */ int f, k, n, i, c; int record[MAX] = { REC }; /* receive r */ f = 0; while ((c = getchar()) != '*') if (c == 'r') { scanf("%lf %lf %lf %lf", &pic[f][0], &pic[f][1], &pic[f][2], &pic[f][3]); f++; } else if (c == 'c') { scanf("%lf %lf %lf", &pic[f][0], &pic[f][1], &pic[f][2]); record[f++] = CIR; } k = 1; while (scanf("%lf %lf", &x, &y) == 2) { if (x == 9999.9 && y == 9999.9) return 0; for (n = OUT, i = 0; i < f; i++) if (record[i] == REC) { if (x > pic[i][0] && x < pic[i][2] && y > pic[i][3] && y < pic[i][1]) { printf("Point %d is contained in figure %d\n", k, i + 1); n = IN; } } else if (record[i] == CIR) if (DISTANCE(x, y, pic[i][0], pic[i][1]) < SQUARE(pic[i][2])) { printf("Point %d is contained in figure %d\n", k, i + 1); n = IN; } if (n == OUT) printf("Point %d is not contained in any figure\n", k); k++; } return 0; }
沒有留言:
張貼留言