如何删除n个数字中的c位?

时间:2019-05-06 16:38:02

标签: c++ function numbers digits

我编写了一个P函数,该函数删除了c整数中的n个数字。

该函数的开头为:void P(int &n, int &c)

比方说,n = 23734,c = 3
输出应为:274

这是我在这里问之前尝试过的。

无效P(int&n,int&c) {

int p=1,k=0;
while(n)
{
    if(n%10==c)
        n=n/10;
        else
        {
            k=k+n%10*10;
            n=n/10;
        }
}
cout<<k;

}

P.S。我是新来的,这就是为什么我不知道如何正确添加代码的原因。

1 个答案:

答案 0 :(得分:2)

使用std :: to_string()将n转换为字符串:

std::string s = std::to_string(n);

然后通过将48加到c上来将其转换为字符,这相当于'0'+您的数字c ='0'与'9'之间的一些字符。

char myChar = '0' + c;

现在通过遍历字符串并删除myChar == s [i]

的索引来擦除每次出现的myChar。
for(int i = 0; i < s.size(); i ++){
    If(myChar == s[i]){
        s.erase(s.begin()+i);
        i--;
    }
}

最后,将字符串转换回int:

n = std::stoi (s);

编辑:您也可以使用除法和取模运算来完成此操作,如注释之一所述。

这是我刚刚整理的一个示例:

bool sign = false; // false -> + , true -> -
if (n < 0) { n = -n; sign = true; }
int back = 0;
int front = n;

int i = 0;
while (front > 0) {
    if(front % 10 != c){
        back += (front % 10) * std::pow(10, i++);
    }
    front /= 10;
}
n = sign ? -back : back;