如何在不使用堆栈或数组的情况下从INT中提取每个数字?(C )
How to extract each digit from int without using stack or array? (C++)
我有一个分配,我想在输入一个数字时打印特定代码,例如90621。数字9打印代码 ->提取0(按顺序)。
问题是我只弄清楚如何以相反的顺序提取数字(例如:首先提取1,然后在90621中提取2),而我不确定如何按顺序进行操作。我已经在这里看到了一些帖子,人们将数字转换为字符串,但是我无法做到这一点,因为我称之为的功能之一将INT作为参数。我们还只涵盖了诸如循环之类的基础知识,并且如果运行范围到目前为止,我不确定如何使用堆栈或数组。
这是我提取数字并打印代码到目前为止的代码:
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));
}
基本上,您正在使用呼叫堆栈作为存储先前字符串的堆栈。这也是编写此功能的最小方法。
您可以在转换为char每个数字后逆转字符串结果:
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;
}
一个解决方案可能是:
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 = 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'));
}
相关文章:
- 从 std::vector<无符号字符>切片中提取 int?
- z3 提取 Seq Int 作为 std::vector<int>
- 如何安全地将有符号字段从uint32_t提取到有符号数字(int或uint32_t)中
- 如何从C++中的字符串ID中提取int日,月和年
- 从 vector<pair<string, int 中提取不包含 0 的字符串>>
- 从字符串中提取单个字符并将其转换为 int
- 从字符串中提取int值和字符串
- 正则表达式:在字符串和冒号之后提取 int
- 如何在不使用堆栈或数组的情况下从INT中提取每个数字?(C )
- 从长长的长度中提取int
- c++使用字符串流从字符串内部提取int
- 从文本文件中提取特定值(char & int)并插入到多个变量中C++
- 字符串解析以在C++中为Arduino提取int
- 在C++中使用sscanf从字符串中提取int
- 正在C++中提取char数组的int
- 从包含特殊字符的char*中提取int
- c++文件提取检查是否为int
- 使用文件提取操作符读取int或string
- 为什么当我提取到"char"和"int"时,IOStream的EOF标志行为会有所不同?
- 从字符串中提取int并插入到c++映射