计算数字的平方根的程序。

时间:2012-04-14 02:12:05

标签: c++

我必须制作一个程序,它接收一个数字并输出它的平方根。 Ex - 45 - > 3√5。我制作了一个程序,但它只返回了我输入的相同数字。非常感谢帮助。 这是我的代码 - >

#include<iostream>
using namespace std;


int squarerootfinder(int number, int divisor){
     if(divisor == 1){

            return 1;
     }
     else{

            if((number / (divisor * divisor))% 1 != 0){

                    divisor = squarerootfinder(number, divisor - 1);

            }
            if((number/ (divisor * divisor)) % 1 == 0 ){
            return divisor;

            }

      }

}
int main(){
     int number;
     cout << "Enter a number to find the square root of it \n";
     cin >> number;
     int divisor = number;
     int squareroot;
     squareroot = squarerootfinder(number, divisor);
     cout << squareroot << endl;
     return 0;
}

2 个答案:

答案 0 :(得分:2)

此行的两个问题都与整数类型有关:

if((number / (divisor * divisor))% 1 != 0){

记住整数运算的结果是一个整数,进入函数的第一组值的值是多少?假设number是5.然后我们有:

5/(5*5) = 5/25 = 0

同样适用于% 1。 int总是整数,所以modding为1总是返回0。

答案 1 :(得分:-2)

这里的问题是使用正确的算法,那就是你需要在squareRootFinder函数中使用std库中的cmath头。您还可以使用函数来获取整数。这是我的代码。希望它有所帮助。

#include <iostream>
#include <cstring>
#include <cmath>


using namespace std;

int getPositiveInt(string rqstNum)
    {
        int num;
        do
        {
           cout << rqstNum << endl;
           cin >> num;
        }while(num == 0);

        return num;
    }


double squareRootFinder(double Num)
    {
        double squareroot;
        squareroot = sqrt(Num);
        return squareroot;
    }

int main()
{
 int Num = getPositiveInt("Enter a number and i'll calculate the squareroot ");
 double squareroot = squareRootFinder(Num);

    // To dispay the answer to two decimal places we cast the squareroot variable
    squareroot *= 100;
    squareroot = (double)((int)squareroot);
    squareroot /= 100;
    cout << squareroot << endl;

   return 0;
}