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

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

Войти
Регистрация
Восстановить пароль
 
Surges
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 44
#1

Как определить, есть ли в числе цифра? - C++

15.04.2016, 12:32. Просмотров 205. Ответов 3
Метки нет (Все метки)

Нужно, чтобы число увеличивалось, пока цифры 4 и 3 не исчезнут из такого числа.
Например
12 -> 12;
13 -> 15;
141 -> 150;
231 -> 250.
Пробовал через операцию деления:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
 
int main(int argc)
{
    setlocale(LC_ALL, "Russian");
    int i;
    cin >> i;
    while (true)
    {
        if (i % 10 == 3 || i % 10 == 4 || i % 100 == 3 || i % 100 == 4 || i % 1000 == 3 || i % 1000 == 4 || i == 3 || i == 4) {
            i++;
            continue;}
        else
            break;
    }
    cout << i << endl;
      system("pause");
    return 0;
}

Но результаты не всегда правильные. Например, здесь 131 как 131 ( но зато из 13 -> 15).
__
Пробовал через char[]:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
 
int main(int argc)
{
    setlocale(LC_ALL, "Russian");
    char input[3000];
    cin >> input;
    for (int i = 0; i != 3000; i++)
    {
        while (input[i] == '4' && i < 3000 || input[i] == '3' && i < 3000)
        {
            if (input[i] == '3')
                input[i] = '4';
            if (input[i] == '4')
                input[i] = '5';
        }
    }
    cout << input << endl;
        system("pause");
    return 0;
}

Но тут число получается не самое ближнее к исходному (из 231 должно получиться 250, но здесь получается 251).
Помогите, пожалуйста, с реализацией.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2016, 12:32     Как определить, есть ли в числе цифра?
Посмотрите здесь:

C++ Определить, какая цифра в заданном числе встречается чаще других
Верно ли, что в числе есть цифра, встречающаяся 2 и более раз? C++
Если в нем есть цифра a и b, то определить, какая из них расположена в числе правее C++
Определить, какая цифра в числе есть большей – первая или последняя C++
C++ Составить программу, которая определяет есть в заданном целом числе N цифра C
C++ Дано целое число N. Определите, есть ли в числе 2N цифра, равная введѐнной цифре К.
C++ Определить сколько раз встречается максимальная цифра в числе
Определить, встречается ли цифра M в числе Р больше чем 2 раза C++
Определить, имеется ли в числе заданная цифра C++
Как определить на четном или нечетном месте стоит цифра в числе? C++
Определить сколько раз в числе встречается заданная цифра C++
C++ Определить, есть ли в заданном числе указанная цифра

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4773 / 4111 / 1375
Регистрация: 14.04.2014
Сообщений: 16,136
15.04.2016, 14:27     Как определить, есть ли в числе цифра? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(int argc)
{
    setlocale(LC_ALL, "Russian");
    string s;
    int x;
    cin >> x;
 
    for (; to_string(x).find_first_of("34") != string::npos; ++x) cout << x << endl;
 
    cout << x << endl;
 
    system("pause");
    return 0;
}
Ilot
Модератор
Эксперт С++
1784 / 1159 / 224
Регистрация: 16.05.2013
Сообщений: 3,050
Записей в блоге: 5
Завершенные тесты: 1
15.04.2016, 15:08     Как определить, есть ли в числе цифра? #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
nmcf, не самое лучшее решение. На самом деле достаточно найти первое вхождение числа 3 или 4. Затем заменить его на 5, а все остальные числа приравнять нулю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
    std::string s;
    std::cin >> s;
    std::string::size_type idx = s.find_first_of("34");
    if(idx != std::string::npos) {
        s[idx] = '5';
        std::fill(s.begin() + idx + 1, s.end(), '0');
    }
    std::cout << s;
    return 0;
}
nmcf
4773 / 4111 / 1375
Регистрация: 14.04.2014
Сообщений: 16,136
15.04.2016, 15:15     Как определить, есть ли в числе цифра? #4
Ilot, я и не говорю, что лучшее. Просто рабочая версия того, что автор пытался сделать.
Yandex
Объявления
15.04.2016, 15:15     Как определить, есть ли в числе цифра?
Ответ Создать тему
Опции темы

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