gpt4 book ai didi

c++ - collat​​z 猜想打印对象的数量和使用类的序列

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:12:20 24 4
gpt4 key购买 nike

    #include<iostream>
using namespace std;
class ulam
{
int num;
double prod;
int cot;
public:
ulam(){cot=0;}
ulam(int x)
{
num=x;
}

void process()
{
for(int i=0;num==1;i++)
{
cout<<num<<endl;
if((num%2) == 0)
{
prod=num/2;
}
else
{
prod=(3*num)+1;
}
num=prod;
cot++;
}
}
void display()
{
cout<<"the number of steps required is: "<<cot;
}
};
int main()
{
int n;
cout<<"enter the number"<<endl;
cin>>n;
ulam obj(n);
obj.process();
obj.display();
}

当我编写这段代码时,我认为 cot 值是一个垃圾值。我不知道我哪里出错了。我使用 class 因为我觉得它更具描述性。但是这个程序背后的主要目的是找到一个数字达到一个数字所需的步骤数并打印整个数字序列。对于那些不知道 collat​​z 猜想的人 https://en.wikipedia.org/wiki/Collatz_conjecture

最佳答案

您在 process 函数内的 for 循环条件是错误的。它应该是 num!=1。您还需要初始化 cot。您实际上不需要 prod

#include<iostream>
using namespace std;
class ulam
{
int num;
int cot;
public:
ulam()
{
cot=0;
}
ulam(int x)
{
cot=0;
num=x;
}

void process()
{
for(int i=0;num!=1;i++)
{
cout<<num<<endl;
if((num%2) == 0)
{
num=num/2;
}
else
{
num=(3*num)+1;
}
cot++;
}
}
void display()
{
cout<<"the number of steps required is: "<<cot;
}
};
int main()
{
int n;

cout<<"enter the number"<<endl;
cin>>n;
ulam obj(n);
obj.process();
obj.display();

return 0;
}

关于c++ - collat​​z 猜想打印对象的数量和使用类的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39149114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com