//串长方形统计
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n = 1,t,a1 = 0,b1 = 0,a2,b2; //a1、b1分别表示长、宽方向上已统计过的整数
float a,b,x,le,ca,cb; //a、b为长方形两条边
cout << "输入长方形的长和宽:" << endl;
cin >> a >> b;
le = sqrt(a*a + b*b); //le表示对角线的长
ca = a/le; //ca、cb分别表示长、宽两方
cb = b/le; //向的变化比例
for (x = 0;x < le;x+= 0.01) //x以微量0.01增长
{
t = 0;
a2 = x * ca; //a2、b2分别表示长、宽两方
b2 = x * cb; //向的增量
if(a2 >= a1 + 1){t = 1;a1 = a2;}
if(b2 >= b1 + 1){t = 1;b1 = b2;}
if(t == 1) n++;
}
cout << "对角线串过正方形个数为:" << n << endl;
return 0;
}
统计长方形对角线穿过的小正方形的个数(摘自《计算机程序设计经典题解》)
最新推荐文章于 2022-04-12 16:32:50 发布