C ++找到平方根到精度

时间:2012-02-15 00:44:23

标签: c++

这是我第一次使用C ++,我的作业分配如下,尝试在其下面。

  • 您要编写一个程序,将计算平方根达到所需的准确度。通过提示用户输入两个数字来开始程序:(1)确定平方根的值和(2)结果中所需的精确小数位数。使用循环分别确定下一个最高完美正方形和下一个最低正方形。然后应构建一个计数控制的循环;它会对每个所需的小数位执行一次;
  • 在此计数控制循环的单次通过期间,近似值将递增或递减Δ= 1 / 10decimalPosition,直到实际值通过。在循环的第一次通过时,Δ将是1/10 1 = 0.1;在第二次通过时,Δ将是1/10 2 = 0.01,依此类推。如果近似值太小,计数控制循环内的事件控制循环将增加近似值,直到它变得太大。

我不确定如何开始为第2段中的过程构建循环。尽管如此 这些说明对我来说没有意义。

到目前为止我的进展:

int
sqroot()
{
   cout << setiosflags (ios::fixed|ios::showpoint); //assumed I need for output  later


   double number;
   cout<<"Enter the number to find the square root of: ";
      cin>>number;
   int sqRoot = 1;            
   while (sqRoot*sqRoot < number)   // sqRoot is too small
      sqRoot++;                     //  try the next number

   int y=0;
   int newRoot =1;
   while (y < number)
  {
     if (newRoot*newRoot > number )
     break;
     y=newRoot*newRoot;
     newRoot++;
  }


    int decimalInput;
    int decimalPosition= 0;
       cout<<"Enter the desired decimal position: "<<endl;
       cin>>decimalInput;
    while (decimalPosition < decimalInput)
        decimalPosition++;

    return 0;

 }

1 个答案:

答案 0 :(得分:0)

你不应该只是增加新的newRoot 1(newRoot ++),而是通过更小的步骤。为了提高效率,你可以开始大步(10的大功率,例如1000)。在结果的平方大于输入数之前,将此步骤除以10。

额外提示:

有两个嵌套循环。外循环检查步&gt; =错误,内循环检查结果是否足够小。