试图在C ++中使用双打。不知道我哪里出错了

时间:2014-03-10 08:25:38

标签: c++

所以我正在编写这个程序,它接受一个输入并尝试将输入加1,如果它是偶数,或者将它乘以3然后再加1.当我尝试时,它会给我这个错误编译它:

bigbeno37@vm-0:~/GitHub2$ g++ NumberGenerator1.cpp
NumberGenerator1.cpp:1:2: warning: #import is a deprecated GCC extension [-Wdeprecated]
NumberGenerator1.cpp: In function ‘int main()’:
NumberGenerator1.cpp:13:5: error: ‘inputNumberClone’ was not declared in this scope
NumberGenerator1.cpp:16:26: error: invalid operands of types ‘double’ and ‘int’ to    binary ‘operator%’
NumberGenerator1.cpp:19:26: error: cannot convert ‘int(int (*)(void*), void*, int,     void*, ...)throw ()’ to ‘double’ in assignment
NumberGenerator1.cpp:24:26: error: cannot convert ‘int(int (*)(void*), void*, int,  void*, ...)throw ()’ to ‘double’ in assignment

这是我的代码

#import <iostream>

using namespace std;

int main(){
cout << "Please enter a number: " << endl;

double inputNumber = 0;
double inputerNumberClone = 0;
double stepsClone = 0;

cin >> inputNumber;
inputNumberClone = inputNumber;

for(double steps = 0; inputNumber != 1; steps++){
    if(inputNumber % 2 == 0){
        inputNumber = inputNumber / 2;

        stepsClone = clone;
    }else{
        inputNumber = inputNumber * 3;
        inputNumber++;

        stepsClone = clone;
    }
}

cout << "It takes " << stepsClone << " to get to 1 from " << inputNumberClone << endl;

return 0;
}

有人能帮助我吗?

6 个答案:

答案 0 :(得分:4)

  • #include不是#import
  • 你写了inputerNumberClone而不是inputNumberClone
  • 您必须使用fmod代替double而不是%

答案 1 :(得分:4)

  1. #include代替#import
  2. 更正拼写错误inputerNumberClone而不是inputNumberClonesteps而不是clone
  3. 使用整数而不是double - 在代码中使用double是没有意义的。
  4. 您将获得一个整数作为输入。然后,如果它是偶数,则将其除以2,因此结果也是整数。

    如果您没有输入整数作为输入思考,那么意味着1.5 % 2

    Double作为符号,指数和分数存储在内存中,并不是100%精确。因此,您可以2取代1.99...9,而不是{{1}}。

答案 2 :(得分:3)

双打不能用于operator%,只能使用。{/ p>

答案 3 :(得分:3)

这是一个错字:

double inputerNumberClone = 0;

应为inputNumberClone

另一个问题是模运算不能应用于双精度。它需要整体类型。

因此,您可以将值从double更改为int,也可以使用std::fmod功能。

if(std::fmod(inputNumber, 2) == 0) {
}

另一个错误在这里:

stepsClone = clone;

什么是克隆?

答案 4 :(得分:2)

首先看一下inputerNumberClone的拼写。

答案 5 :(得分:1)

NumberGenerator1.cpp:13:5: error: ‘inputNumberClone’ was not declared in this scope

你在声明中输了一个拼写错误,并且不知道“inputNumberClone”是什么。

NumberGenerator1.cpp:16:26: error: invalid operands of types ‘double’ and ‘int’ to    binary ‘operator%’

你试图在双精度上使用模运算,而它只允许在c ++中使用整数。 math.h中可能有一个函数(可能是rem或类似其余的东西),可以完成你想要的任务。 %运算符是一个特殊的东西,因为它是整数的指令,但它是双精度(在逻辑上是一个函数)的双精度(在C的设计时)。

NumberGenerator1.cpp:19:26: error: cannot convert ‘int(int (*)(void*), void*, int,     void*, ...)throw ()’ to ‘double’ in assignment
NumberGenerator1.cpp:24:26: error: cannot convert ‘int(int (*)(void*), void*, int,  void*, ...)throw ()’ to ‘double’ in assignment

您可以从名为clone的Linux头文件中获取一个函数。它认为你想在这里使用这个功能。重命名为变量steps,以避免与函数和此错误发生冲突。