HOJ 2991 Find the Point sscanf的用法
HOJ 2991
[cpp]
//思路:用sscanf截取字符串转化为数字,然后找最大的和最小的输出即可
//hint:输出的时候一定要输出char类型的,
// And the format should be the same as the input, especially for the format of the numbers!
// (这个应该是题目中给的对输出要求的提示信息)
//测试:
//1
//4
//(1,5) (0.5,5) (1,4) (0.5,4)
#include <iostream>
#include<cstdio>
#define maxlen 110
using namespace std;
struct node
{
double x;
double y;
} array[maxlen],m;
int main()
{
int N,n,i,ma;
char s[maxlen][maxlen];
cin >> N;
while(N--)
{
cin >> n;
for(i=0; i<n; i++)
{
cin >> s[i];
sscanf(s[i], "(%lf,%lf)", &array[i].x, &array[i].y);
//用sscanf直接截取字符串将char类型的数字转化为double的存在结构体中
}
m.x=array[0].x;
m.y=array[0].y;
ma=0;
for(i=1; i<n; i++)
{
if(array[i].y>m.y)
{
ma=i;
m.y=array[i].y;
m.x=array[i].x;
}
if(array[i].y==m.y)
{
if(array[i].x<m.x)
{
ma=i;
m.y=array[i].y;
m.x=array[i].x;
}
}
}//ma用来记录找到的y最大且x最小的下标
cout << s[ma] << " ";
m.x=array[0].x;
m.y=array[0].y;
ma=0;
for(i=0; i<n; i++)
{
if(array[i].y<m.y)
{
ma=i;
m.y=array[i].y;
m.x=array[i].x;
}
if(array[i].y==m.y)
{
if(array[i].x<m.x)
{
ma=i;
m.y=array[i].y;
m.x=array[i].x;
}
}
}//ma用来记录找到的y最小且x最小的下标
cout << s[ma] << endl;
}
return 0;
}
补充:软件开发 , C++ ,