Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
#1

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

22.12.2009, 21:24. Просмотров 780. Ответов 8
Метки нет (Все метки)

Написал функцию, зацените.

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

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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2009, 21:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция удаляет цифры из числа - как вам? (C++):

Написать программу, которая удаляет из записи числа все цифры, совпадающие с максимальной цифрой - C++
Написать программу, которая удаляет из записи числа все цифры, совпадающие с максимальной цифрой, получая новое число

Функция, переставляющая цифры заданного целого числа в обратном порядке - C++
Составить и проверить функцию которая переставляет цифры заданного целого числа в обратном порядке и получает новое число. Мы только...

Почему функция не удаляет минимальный элемент - C++
Вот кусок функции void second::Udal_Min() { for(int i=0;i&lt;n;i++)\ { if (*(x+i)==min) {if (i==(n-1)) { ...

Функция удаляет начальные пробелы из строки... - C++
Написать функцию которая удаляет начальные пробелы из строки, полученной в качестве аргумента.. В паскале function LTrim(st:...

Функция удаляет из списка все отрицательные элементы - C++
функция удаляет из списка все отрицательные элементы

Функция удаляет из строки заданное количество символов - C++
Задание: Функция удаляет из строки заданное количество символов, начиная с заданной позиции. Помогите пожалуйста, буду очень благодарен.

8
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.12.2009, 22:26 #2
Криво.
Неправильно.
0
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
22.12.2009, 22:43  [ТС] #3
>> odip
А как надо?
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
23.12.2009, 00:31 #4
Ну как минимум избавиться от использования функции pow()
0
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
23.12.2009, 01:23  [ТС] #5
>> odip
Если вам не сложно, то предложите, пожалуйста, лучший, на ваш взгляд способ. (полный код).
0
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
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; 
}
1
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;
0
mamedovvms
2918 / 839 / 93
Регистрация: 30.04.2009
Сообщений: 2,633
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; 
}
а теперь попробуйте вот так
0
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
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;
0
23.12.2009, 13:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2009, 13:35
Привет! Вот еще темы с ответами:

Функция, которая удаляет начальные и конечные пробелы из строки - C++
Написать функцию, которая удаляет начальные и конечные пробелы из строки, полученной в качестве аргумента Добавлено через 1 час 33...

Функция удаляет из строки пробелы и вставляет межу словами по 2 символа - C++
Добрый день, помогите пожалуйста с решением данной задачи: С клавиатуры вводится строка, которая состоит из слов, разделенных одним...

Функция удаляет из строки заданное количество символов, начиная с заданной позиции - C++
Подскажите, что не так в программе.? Функция удаляет из строки заданное количество символов, начиная с заданной позиции. (При...

Функция удаляет из строки заданое количество символом, начиная с заданой позиции - C++
Функция удаляет из строки заданое количество символом, начиная с заданой позиции. напишите плз.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.