The following program is my ACcepted code for UVA-476.
It's a for everybody to learn and discuss.
If there is any mistake or comment, please let me know. :D
此乃UAV 476的AC code!
歡迎一同討論學習,如有錯誤與任何建議請留言 : )
//This program is for UVA 476 Points in Figures Rectangles
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;
int numR = 0;// for number of rectangle
int numP = 0;// for number of points
double rec[11][2][2];
int main()
{
numR = 0;
numP = 0;
char tmpChar;
double x,y;
while(scanf("%c", &tmpChar)!=EOF)
{
if(tmpChar == '*')
break;
numR ++;// from 1 to the number of rectangle
scanf("%lf %lf %lf %lf\n", &rec[numR][0][0], &rec[numR][0][1], &rec[numR][1][0], &rec[numR][1][1]);
//[0][0] and [0][1] is the upper left , [1][0] and [1][1] is the lower right
}
while(scanf("%lf %lf", &x, &y)!=EOF)
{
numP++;// from 1 to the number of points
//To compare the double, we use the absolute value, use float would fail
if( fabs(x-9999.9)<=0.0000001 && fabs(y-9999.9)<=0.0000001 )
break;
bool findAns = false;
for(int i=1; i<= numR; i++)
{
if(x > rec[i][0][0] && x < rec[i][1][0] && y > rec[i][1][1] && y < rec[i][0][1])
{
findAns = true;
printf("Point %d is contained in figure %d\n", numP, i);
}
}
if(findAns == false)
printf("Point %d is not contained in any figure\n", numP);
}
return 0;
}
It's a for everybody to learn and discuss.
If there is any mistake or comment, please let me know. :D
此乃UAV 476的AC code!
歡迎一同討論學習,如有錯誤與任何建議請留言 : )
//This program is for UVA 476 Points in Figures Rectangles
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;
int numR = 0;// for number of rectangle
int numP = 0;// for number of points
double rec[11][2][2];
int main()
{
numR = 0;
numP = 0;
char tmpChar;
double x,y;
while(scanf("%c", &tmpChar)!=EOF)
{
if(tmpChar == '*')
break;
numR ++;// from 1 to the number of rectangle
scanf("%lf %lf %lf %lf\n", &rec[numR][0][0], &rec[numR][0][1], &rec[numR][1][0], &rec[numR][1][1]);
//[0][0] and [0][1] is the upper left , [1][0] and [1][1] is the lower right
}
while(scanf("%lf %lf", &x, &y)!=EOF)
{
numP++;// from 1 to the number of points
//To compare the double, we use the absolute value, use float would fail
if( fabs(x-9999.9)<=0.0000001 && fabs(y-9999.9)<=0.0000001 )
break;
bool findAns = false;
for(int i=1; i<= numR; i++)
{
if(x > rec[i][0][0] && x < rec[i][1][0] && y > rec[i][1][1] && y < rec[i][0][1])
{
findAns = true;
printf("Point %d is contained in figure %d\n", numP, i);
}
}
if(findAns == false)
printf("Point %d is not contained in any figure\n", numP);
}
return 0;
}
沒有留言:
張貼留言
請留下您的任何想法或建議!
Please leave any thought or comment!