Как убрать c цифр в n номере? - PullRequest
0 голосов
/ 06 мая 2019

Я написал функцию P, которая удаляет c цифры в n целом числе.

Глава функции: void P(int &n, int &c).

Скажем, n = 23734 и c = 3
Выход должен быть: 274

Это то, что я пробовал, прежде чем спросить здесь.

void 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 Ответ

2 голосов
/ 06 мая 2019

Используйте std :: to_string () для преобразования вашего n в строку:

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

затем конвертируйте c в символ, добавив к нему 48, что эквивалентно «0» + ваше число c = некоторый символ от «0» до «9».

char myChar = '0' + c;

Теперь удалите все вхождения myChar, просматривая строку и удаляя индекс, где myChar == s [i]

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...