gpt4 book ai didi

c++ - 如何使用字符串数组分解数字的各个数字?

转载 作者:行者123 更新时间:2023-11-30 03:27:24 24 4
gpt4 key购买 nike

我必须编写一个代码,它接受一个输入并打印出一个由原始数字中存在的素数组成的新数字。前任。输入:453输出:53我已经写好了代码:

#include <iostream>
#include<string>

using namespace std;

int main()
{
int number;
int digit;
int reverse = 0;
int reverse1;
int digit1;
cout<<"input a number"<<endl;
cin>>number;
int flag = 0;

while(number!=0)
{
digit = number % 10;
number = number / 10;
for(int i = 2; i < digit; i++)
{
if(digit % i == 0)
{
flag = 1;
}
}
if(flag == 0)
{
reverse = reverse * 10 + digit;
}
}

reverse1 = reverse;
while(reverse1 != 0)
{
digit1 = reverse1 % 10;
reverse1 = reverse1 / 10;
cout<<digit1;
}

cout<<endl;
}

生成相同输出但代码更短的更好方法是什么?刚开始学习编程,请提供通俗易懂的解决方案:)

最佳答案

如果我理解您正在尝试正确执行的操作(有效地从您的输入号码中删除 2、3、5 和 7 以外的数字),那么这应该可行:

#include <algorithm>
#include <iostream>
#include <set>
#include <string>

using namespace std;

int main() {
const set<int> primes{2, 3, 5, 7};
string num;
cin >> num;
num.erase(remove_if(begin(num), end(num), [&](char c){ return !primes.count(c - '0'); }), end(num));
cout << num << '\n';
}

没有对有效数字输入的错误检查,但如果您需要,可以轻松添加。 Live version.

关于c++ - 如何使用字符串数组分解数字的各个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47427176/

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