我必须制作一个程序,它接收一个数字并输出它的平方根。 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;
}
答案 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;
}