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

Удалить заданное число... - C++

Восстановить пароль Регистрация
 
Kisunya
 Аватар для Kisunya
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 49
20.10.2011, 14:38     Удалить заданное число... #1
Подскажите пожалуйста код программы, которая удаляет из заданного числа N цифру а. Например, дано 1234 и цифра 3, программа должна вывести на экран 124...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2011, 14:38     Удалить заданное число...
Посмотрите здесь:

Заменить числа последовательности, превышающие заданное число, на заданное число C++
C++ Вывести на экран число, которое получается если прочитать заданное число в обратном порядке
Напечатать таблицу умножения на заданное число (число вводится с клавиатуры) C++
C++ Удалить из строки заданное количество символов, начиная с заданной позиции
В упорядоченный массив вставить заданное число, сохранив упорядоченность, и удалить последний элемент C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FtarG
 Аватар для FtarG
128 / 128 / 6
Регистрация: 02.11.2010
Сообщений: 316
20.10.2011, 15:01     Удалить заданное число... #2
В таком случае удобнее работать со строками (как мне кажется):
C#
1
2
string N = "1234";
string Result = N.Replace("3", ""); // Заменяем символ 3 на пустой символ
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.10.2011, 15:07     Удалить заданное число... #3
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
 
typedef std::string str_t;
 
int remove_digit(int number, int digit)
{
    digit += int('0');
 
    std::ostringstream ostr;
 
    ostr << number;
 
    str_t str_num = ostr.str();
 
    str_num.erase(std::remove_if(str_num.begin(),
                                 str_num.end(),
                                 [digit](str_t::value_type d) -> bool
                                 {
                                     return d == digit;
                                 }),
                  str_num.end());
 
    int result = 0;
 
    std::istringstream(str_num) >> result;
 
    return result;
}
 
int main()
{
    int number;
    int digit;
 
    std::cout << "Enter number: ";
    std::cin >> number;
 
    std::cout << "Enter digit: ";
    std::cin >> digit;
 
    std::cout << "Number " << number << " without digit " << digit << ": "
              << remove_digit(number, digit) << std::endl;
 
    return 0;
}
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
20.10.2011, 15:21     Удалить заданное число... #4
как вариант методом арифметики, наверно лучше применять строковые.
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
#include <stdio.h>
 
int del_digit(int num, int i) {
  int k, dec, mk, b, tmp, n;
  for(n = 1, b = num; b > 0; b /= 10, n *= 10); 
  for(k = 1, mk = 0, dec = n / 10; n > 0; n /= 10) {
      b = num / n % 10;
      if(b != i) {
          mk  += b * dec;
          dec /= 10;
      } else
          k *= 10;
   }
   if(k > 10) mk = mk / (k/10);
   return  mk;
}
 
int main(){
   printf("%d\n", del_digit(1234, 3) );
   printf("%d\n", del_digit(323,  3) );
   printf("%d\n", del_digit(131711, 1) );
   getchar();
   return 0;
}
Yandex
Объявления
20.10.2011, 15:21     Удалить заданное число...
Ответ Создать тему
Опции темы

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