该函数处理一个字符串数组,并通过使用堆栈函数返回一个int值。 在堆栈中,要推送的第一个数字是最后一个要弹出的数字,因此循环从字符串的结尾开始。 它应该删除字符串开头的任何0 例如。 004912500 => 4912500 但我不知道如何确保我的循环能够在开始时区分0和0之后,因为字符都是从后面推出的。 getVP返回void指针的整数值
int getDecimal (const char stringOfDigits [])
{
Stack S;
int *temp;
VoidPtr item;
// Loop to get int value of each element of char array
for (int i = strlen(stringOfDigits)-1; i >= 0; i--)
{
if (isdigit(stringOfDigits[i]))
{
if (stringOfDigits[i] != '0')
{
temp = new int;
*temp = (stringOfDigits[i] - '0');
item = temp;
S.push(item);
}
}
}
while(!S.isEmpty())
{
item = S.pop();
cout << S.getVP(item);
}
cout << endl;
}
答案 0 :(得分:0)
在开始打印之前略过0
int getDecimal (const char stringOfDigits [])
{
Stack S;
int *temp;
VoidPtr item;
int i = strlen(stringOfDigits)-1;
// Loop to get int value of each element of char array
for (; i >= 0; i--)
{
if (isdigit(stringOfDigits[i]))
{
if (stringOfDigits[i] != '0')
{
temp = new int;
*temp = (stringOfDigits[i] - '0');
item = temp;
S.push(item);
}
}
}
if(!S.isEmpty())
{
item = S.pop();
//skip the 0's
while((item == 0) && !S.isEmpty())
{
item = S.pop();
}
//output the first valid item, or a 0 if it's filled with 0
cout << S.getVP(item);
while(!S.isEmpty())
{
item = S.pop();
cout << S.getVP(item);
}
cout << endl;
}