C++ 如何在不使用堆栈或数组的情况下从int中提取每个数字?(C+;+;)

C++ 如何在不使用堆栈或数组的情况下从int中提取每个数字?(C+;+;),c++,loops,int,modulo,C++,Loops,Int,Modulo,我有一个任务,当输入一个数字时,比如90621,我想打印一个特定的代码。我假设按顺序提取该数字并打印代码ex:extract Digital 9打印代码-->extract 0(按顺序) 问题是我只知道如何按相反的顺序提取数字(例如:先提取1,然后为90621提取2),我不确定如何按顺序提取。我在这里看到过一些帖子,人们将数字转换成字符串,但我不能这样做,因为我调用的函数之一使用int作为参数。到目前为止,我们还只讨论了循环和if函数等基础知识,所以我不确定如何使用堆栈或数组 这是我目前提取数字

我有一个任务,当输入一个数字时,比如90621,我想打印一个特定的代码。我假设按顺序提取该数字并打印代码ex:extract Digital 9打印代码-->extract 0(按顺序)

问题是我只知道如何按相反的顺序提取数字(例如:先提取1,然后为90621提取2),我不确定如何按顺序提取。我在这里看到过一些帖子,人们将数字转换成字符串,但我不能这样做,因为我调用的函数之一使用int作为参数。到目前为止,我们还只讨论了循环和if函数等基础知识,所以我不确定如何使用堆栈或数组

这是我目前提取数字和打印代码的代码:

string barCode(int zip){
    string result;
    int n;
    while (zip > 0){
        n = zip % 10;
        result += codeForDigit(n);
        zip = zip / 10;
    }

    return result;
}
有关功能的一些信息: -函数codeForDigit(int-digit)获取一个数字并返回该数字的代码。
-
barCode(int-zip)
通过将数字分解为单个数字、编码该数字并将其添加到字符串返回值来返回整个条形码。

一种简单的方法是通过递归。事实上,它相当优雅。你可以这样写:

string barCode(int zip)
{
    if (zip <= 0) return "";
    return (barCode(zip / 10) + codeForDigit(zip % 10));
}
字符串条形码(int-zip)
{

if(zip一个简单的方法是通过递归。事实上,它非常优雅。你可以这样写:

string barCode(int zip)
{
    if (zip <= 0) return "";
    return (barCode(zip / 10) + codeForDigit(zip % 10));
}
字符串条形码(int-zip)
{

如果(zip您可以在完成每个数字到字符的转换后反转字符串结果:

std::string barCode(int zip){
    std::string result;
    while(zip > 0){
        result += zip % 10 + '0';
        zip /= 10;
    }

    std::reverse(result.begin(), result.end());     
    return result;
}


int main(){
    std::cout << barCode(245) << std::endl;

    return 0;
}
std::字符串条形码(int-zip){
std::字符串结果;
而(zip>0){
结果+=zip%10+'0';
zip/=10;
}
std::reverse(result.begin(),result.end());
返回结果;
}
int main(){

std::cout完成每个数字的字符转换后,可以反转字符串结果:

std::string barCode(int zip){
    std::string result;
    while(zip > 0){
        result += zip % 10 + '0';
        zip /= 10;
    }

    std::reverse(result.begin(), result.end());     
    return result;
}


int main(){
    std::cout << barCode(245) << std::endl;

    return 0;
}
std::字符串条形码(int-zip){
std::字符串结果;
而(zip>0){
结果+=zip%10+'0';
zip/=10;
}
std::reverse(result.begin(),result.end());
返回结果;
}
int main(){
std::cout一种解决方案可以是:

string barCode(int zip)
{
    string result;
    if(zip <=0) return "";

    //Find 10s in zip
    int i=zip/10;

    int nTens = 0;
    while( i<=0)
    {
        i = i/10;
        nTens++;
    }

    int n;
    for (int j=0; j<=nTens ; j++)
    {
        n = zip / pow(10, (nTens-j));
        result += codeForDigit(n);
        zip = zip - n * pow(10, (nTens-j))
    }
    return result;
}
字符串条形码(int-zip)
{
字符串结果;
如果(zip一种解决方案可以是:

string barCode(int zip)
{
    string result;
    if(zip <=0) return "";

    //Find 10s in zip
    int i=zip/10;

    int nTens = 0;
    while( i<=0)
    {
        i = i/10;
        nTens++;
    }

    int n;
    for (int j=0; j<=nTens ; j++)
    {
        n = zip / pow(10, (nTens-j));
        result += codeForDigit(n);
        zip = zip - n * pow(10, (nTens-j))
    }
    return result;
}
字符串条形码(int-zip)
{
字符串结果;

如果(zip我认为最简单的方法是将数字转换为字符串,然后迭代:

int zip = 123456789;
std::string digits = std::to_string(zip);
std::string barcode;
int d=0;

for (auto it=digits.begin(); it != digits.end();it++)
{
    d= int(*it);
    barcode.push_back(codeForDigit(d-'0'));
}

我认为最简单的方法是将数字转换为字符串,然后迭代:

int zip = 123456789;
std::string digits = std::to_string(zip);
std::string barcode;
int d=0;

for (auto it=digits.begin(); it != digits.end();it++)
{
    d= int(*it);
    barcode.push_back(codeForDigit(d-'0'));
}

你看过递归吗?迭代加堆栈==递归。我们看过基本递归,但我不熟悉如何将数字推到堆栈上。这是一个如何“向后”的小例子.基本上,我们得到的结果是逆序的,对吗?为什么不直接手动逆序呢?你看过递归了吗?迭代加上堆栈==递归。我们看过基本的递归,但我不熟悉如何将数字推到堆栈上。这是一个如何“向后”的小例子.基本上都是按相反的顺序得到结果的,对吗?为什么不手动将其反转?