C++ 在c+中非法使用浮点+;

C++ 在c+中非法使用浮点+;,c++,floating-point,C++,Floating Point,我在程序中非法使用浮点错误: #include<iostream.h> #include<conio.h> #include<math.h> void main() { clrscr(); int number,reverse,check,i,j,k=0,x; cout<<"Please enter number: "; cin>>number; //Obtaining no. of digits: for(i=1;

我在程序中非法使用浮点错误:

#include<iostream.h>
#include<conio.h>
#include<math.h>

void main()
{
 clrscr();

 int number,reverse,check,i,j,k=0,x;

 cout<<"Please enter number: ";
 cin>>number;

 //Obtaining no. of digits:
 for(i=1;check==0;i++)
 {
  check/=10;
 }

 //Reversing number:
 if(i%2==0)    //case even digits
 {  for(j=i;j>0;j--)
    {

    x=(number%pow(10,j))/pow(10,j-1);       //here
    reverse+=x*pow(10,k);
    k++;
    }
 }

 cout<<"Reverse number: "<<reverse;

 getch();
} 
#包括
#包括
#包括
void main()
{
clrsc();
整数,反向,方格,i,j,k=0,x;
库特号码;
//获取位数:
对于(i=1;检查==0;i++)
{
检查/=10;
}
//倒车号码:
if(i%2==0)//大小写偶数位数
{对于(j=i;j>0;j--)
{
x=(数字%pow(10,j))/pow(10,j-1);//这里
反向+=x*pow(10,k);
k++;
}
}

CUT< P> <代码> POW是返回< C++ >双的函数。C++<代码>模运算符%仅以整数表示。这是因为数学模运算是为整数定义的。因此<代码>非法使用< /代码> ./P> 此外,使用
check
变量时不进行初始化。在使用前初始化所有变量,以避免进一步的意外

编辑

以下是一些需要进行的其他更正:

check=number
在第一个
for
循环之前

for(i = 0; check != 0; i++)

最后,试着找到另一种方法来获取数字的位数,而不必使用
pow
。有一些简单的方法可以使用连续整数除法。

\include
我知道你可能现在在学校,没有选择,但作为个人要求:请在进入t之前阅读一些这十年的学习材料在专业领域,即使是2000年代写的任何像样的东西都会好得多。另外两个包括和
void main
也无助于学习材料的情况,从不推荐到明显非法。模运算符(
%
)只能与整数操作数一起使用。
pow()
返回一个
双精度
,它不是整数类型,即使它返回的值恰好是整数。请尝试编写代码,使其仅依赖于涉及整数变量的操作(即排除浮点
)。此外,避免使用
,因为它是非标准的,避免使用
,因为它是预标准的(除非您有一个古老的编译器,在这种情况下最好更新)使用旧编译器的问题是,许多正确的答案不会被你的古编译器所使用,或者在某些情况下,因为编译器是预先标准的,所以不同于当前标准行为。所有这些都通过使用现代C++编译器来解决,而不是25年前的事情。d您的错误,您尝试的解决方案太复杂和复杂。挑战:尝试重写以仅使用一个模、一个乘法、一个加法和一个整数除法。(绝对不需要调用
pow()
)@OsheenSachdev要想找出它给出错误答案的原因,请使用一个分步调试程序。观察值在每一步的变化情况(与您认为的变化情况相比),您应该看到您的假设是错误的。谢谢!进行了更正。我只是将
pow(10,j)
更改为
int(pow(10,j))
。但是我的编程没有给出所需的输出。既然你已经看过一次代码,你能帮我一下吗……为什么你要用
pow
来反转一个数字呢?
pow
函数不应该用于整数计算。。你的赋值不需要使用任何浮点值——反转一个数字不需要ire
pow
,只知道在取模后如何将循环中的整数值相加。@OsheenSachdev根本不使用
pow()
。这是不必要的,增加了复杂性,引入了舍入错误的可能性(在trunc cast时更糟)这比简单的纯整数解要慢。哦,天哪,我真是个失败者!@OsheenSachdev不这么想。坚持下去。每个人都会在某个时刻挣扎。