首页 > 试题广场 >

今有一个文件 abc.txt,内含一些数对,找出全部积为 1

[问答题]
今有一个文件 abc.txt,内含一些数对,找出全部积为 16! 的数对,并输出。注意浮点数的比较方法。文件内容和输出样例为:

推荐
//-----------------------------------
//测试浮点数比较
//-----------------------------------
#include<iostream>
using namespace std;
//-----------------------------------
int main() {
  cout.precision(20);
  double f=362880;
  double d1=8100;
  double d2=44.8;
  cout<<"d1= "<<d1<<" ";
  cout<<"d2= "<<d2<<"\n";
  double x =d1*d2;
  double y =d1*d2-f;
  cout<<"d1*d2 ="<<x<<"\n";
  cout<<"10! = "<<f<<"\n";
  cout<<"d1*d2==10! "<<boolalpha<< (d1*d2==f)<<"\n";
  cout<<"d1*d2 - 10! = "<<y<<"\n";
}//----------------------------------
其运行结果为
d1= 8100    d2= 44.79999999999999716
d1*d2 = 362880
10! = 362880\
d1*d2==10!   false
d1*d2 - 10! = -2.302158463862724602e-11

//-----------------------------------
//EX0404.cpp
//判 16!因子对
//-----------------------------------
#include<fstream>        //for file"abc.txt"
#include<iostream>
#include<cmath>          //for abs()
using namespace std;
//-----------------------------------
int main() {
  ifstream cin("abc.txt");
  double f16=20922789888000.0;    //16!
  cout.precision(15);
  for(double d1, d2;cin>>d1>>d2;)
    if(abs(d1*d2-f16)<1e-3)
      cout<<d1<<" "<<d2<<"\n";
}//----------------------------------


发表于 2018-05-07 20:34:28 回复(0)