POJ 1005 题的分析

题目:密西西比河岸某处陆地因为河水侵蚀,每年陆地面积都在减少,每年减少50平方英里,减少的陆地面积呈半圆形,即该半圆形面积以每年50平方英里的速度增长。在第一年初时,该半圆形面积为0,半圆形的圆心坐标为(0,0),现在的任务是给定一个坐标,求出该坐标在哪一年年底会被河水侵蚀。假设给定的坐标到圆心的距离不会等于半圆的半径。
输入:第一行输入坐标个数,第二行开始输入坐标,每个坐标占一行,每个坐标由横坐标和纵坐标组成,坐标值为浮点数,单位为英里。
这里用到了c++中浮点数的输入输出
#include <iostream>
#include <iomanip>
using namespace std;
main(){
double x=9.0000;
cout << x << endl;
cout << fixed << setprecision(2) << x << endl;
}
   一下为题目的程序,就这个题来说,我认为他最重要的是读懂题,用一个简单的算法就可以求解。
首先是面积的一半,然后是50,这是最重要的两点,然后就是输入输出要符合题目要求,防止出现低级错误。
#include<iostream>
using namespace std;
#include<iomanip>
#include<math.h>
#define PI 3.1415926
int num;//定义测试用例为整数;
float a, b;//定义笛卡尔坐标为单精度实数
int i;
double cale;//定义(半圆面积/50)为双精度实数
int year;
int main()
{
 cin >> num;
 for (i = 1; i <=num;i++)
 {
  cin >> fixed >> setprecision(1) >> a;
  cin >> fixed >> setprecision(1) >> b;
  cale = (a*a + b*b)*PI / 2.0 / 50.0;
  year = ceil(cale);
  cout << "Property: " << i << "This property will begin eroding in year " << year << endl;
 }
 cout << "END OF OUTPUT." << endl;
 system("pause");卡屏用到
}
用到的函数

ceil()
头文件为math.h 
返回大于或者等于指定表达式的最小整数
函数原型:
float cell (float value)
:返回不小于value的下一个整数,value如果有小数部分则进一位。
ceil()返回的类型仍然是float。因为float值得范围通常比integer要大;
与其相对的函数是floor()
    :x=9.88,floor(x)=9;

一起研究代码的世界,我的邮箱[email protected];欢迎讨论

猜你喜欢

转载自blog.csdn.net/ab1605014317/article/details/78336247