我正在尝试创建一个程序,当您输入1或0时,它将把它翻转为相反的数字,并将其附加到末尾。然后,应使用整个编号重复此过程。

例:

输入-1

迭代次数-3

预期产量-10010110

实际输出-1

#include <iostream>
#include <string>
std::string num;
std::string futureNum;
int iterations = 1;
int main()
{

    std::cout << "number to start with (1 or 0)";
    getline (std::cin, num);
    std::cout<<"\nIterations:";
    std::cin>>iterations;
    while (iterations > 0) {
        for(int i = 0;i<=num.length();i++)
        {
            futureNum[i]=((num[i]-48)^1)+48;
        }

        num.append(futureNum);
        futureNum="";
        iterations--;
    }
    std::cout<<num<<std::endl;
}

最佳答案

我最终通过将futureNum[i]=((num[i]-48)^1)+48;更改为futureNum.push_back(((num[i]-48)^1)+48);,然后将futureNum="";替换为futureNum.clear();来修复了该程序

感谢FrançoisAndrieux

10-07 21:43