如何使用字符串数组来分解一个数字的单个数字
How to use a string array to breakdown the individual digits of a number?
我必须编写一个代码,该代码获取输入并打印出由原始数字中存在的素数组成的新数字。前任。输入: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';
}
没有错误检查有效的数字输入,但是如果您需要的话,这很容易添加。实时版本。
相关文章:
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何获取一个数字的前3位
- 我想做一个彼此不同但重复出现的数字
- 如何检查一个c++字符串中有多少相同的字符/数字
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- CIN 仅在输入非数字值时跳过下一个 CIN
- 以C++输出一个数字三角形
- 形成一个斐波那契三角形,使得每个数字是上面左对角线或右对角线上两个数字的总和
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 一个C++程序,用于在输入位数时输出具有特定位数的 .txt 文件中的所有数字
- 在C++中编程,将 3 个数字发送到一个函数,然后计算这 3 个数字的平均函数
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- 找到 x^n 的所有组合,并检查它们的总和是否等于一个不包括相同数字的数字
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?
- 将数字提高到一个巨大的指数
- 反转一个数字程序不起作用,为什么?
- 使用带有一个参数函数的递归找到数字的平方
- 为什么当我输入一个大数字时,输出会一遍又一遍地重复?
- 为什么断点显示数组的第二个值是一个大数字?额外学分工作