Форум программистов, компьютерный форум CyberForum.ru

Функция удаляет цифры из числа - как вам? - C++

Восстановить пароль Регистрация
 
OVERPOWER8
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
22.12.2009, 21:24     Функция удаляет цифры из числа - как вам? #1
Написал функцию, зацените.

функция удаляет цифры из числа:

DelDigit(число, цифра)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <math.h>
using namespace std;
 
int DelDigit(int number, int bad)
{
    int pos=0;
    int number_copy = number;
 
    while(number_copy!=0)
    {
        number_copy /= 10;
        pos++;
    }
 
    number_copy = number;
    int i, temp;
 
    int NewNumber=0;
 
    for(i=pos-1; i>=0; i--)
    {
        temp = number_copy/pow(10, i);
        number_copy -= temp*pow(10,i);
        if(temp==bad)
            NewNumber/=10;
        else
            NewNumber+=temp*pow(10,i);
    }
 
    return NewNumber;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
22.12.2009, 22:26     Функция удаляет цифры из числа - как вам? #2
Криво.
Неправильно.
OVERPOWER8
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
22.12.2009, 22:43  [ТС]     Функция удаляет цифры из числа - как вам? #3
>> odip
А как надо?
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
23.12.2009, 00:31     Функция удаляет цифры из числа - как вам? #4
Ну как минимум избавиться от использования функции pow()
OVERPOWER8
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
23.12.2009, 01:23  [ТС]     Функция удаляет цифры из числа - как вам? #5
>> odip
Если вам не сложно, то предложите, пожалуйста, лучший, на ваш взгляд способ. (полный код).
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
23.12.2009, 01:49     Функция удаляет цифры из числа - как вам? #6
C++
1
2
3
4
5
6
7
8
9
10
11
int DelDigit(int number, int bad) 
{
   int newNum = 0, mul = 1, digit;     while (number != 0)   
{
    digit =number % 10;
    if (digit != bad)
        newNum += digit * mul;              number /= 10;
    mul *= 10;
   }
   return newNum; 
}
OVERPOWER8
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
23.12.2009, 13:30  [ТС]     Функция удаляет цифры из числа - как вам? #7
>> kazak

Ваш код, конечно, покомпактнее, но там одна неточность - он не удаляет цифру, а не её место записывает 0.

Например, DellDigit(186, 8) = 106.
А должен выводить 16.

Поэтому, вместо 8 строки надо вот это записать:

if(digit!=bad)
mul *= 10;
mamedovvms
2913 / 834 / 93
Регистрация: 30.04.2009
Сообщений: 2,613
23.12.2009, 13:35     Функция удаляет цифры из числа - как вам? #8
а какую цифру надо удалить, то?

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int DelDigit(int number, int bad) 
{
   int newNum = 0, mul = 1, digit;
     while (number != 0)   
{
    digit =number % 10;
    if (digit != bad)
    {
        newNum += digit * mul;
         mul *= 10;
 
     }
    number /= 10;
   }
   return newNum; 
}
а теперь попробуйте вот так
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2009, 13:35     Функция удаляет цифры из числа - как вам?
Еще ссылки по теме:

Функция, которая удаляет начальные и конечные пробелы из строки C++
Функция удаляет из строки заданное количество символов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
23.12.2009, 13:35     Функция удаляет цифры из числа - как вам? #9
Просто немного не так понял задание

Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Поэтому, вместо 8 строки надо вот это записать:
if(digit!=bad)
mul *= 10;
зачем повторяться
C++
1
2
3
4
5
6
if ( digit != bad )
{
   newNum += digit * mul;
   mul *= 10;
}
number /= 10;
Yandex
Объявления
23.12.2009, 13:35     Функция удаляет цифры из числа - как вам?
Ответ Создать тему
Опции темы

Текущее время: 05:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru