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

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

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

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

15.04.2016, 12:32. Просмотров 262. Ответов 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++):

Определить, есть ли в заданном числе указанная цифра - C++
скиньте пожалуйста код программы на с++ которая будет показывать есть ли в числе цифра 3.

Определить, какая цифра в числе есть большей – первая или последняя - C++
Наткнулся на задачу вот задача: Задано трицифровое число. Определить, какая цифра в нем есть большей – первая или последняя. кто...

Если в нем есть цифра a и b, то определить, какая из них расположена в числе правее - C++
??? ((( Дано натуральное число. Если в нем есть цифра a и b, то определить, какая из них расположена в числе правее. Если одна или обе...

Как определить на четном или нечетном месте стоит цифра в числе? - C++
Как определить на четном или нечетном месте стоит цифра в числе? Не могу понять как определить это, если убирать по одной цифре в конце в...

Верно ли, что в числе есть цифра, встречающаяся 2 и более раз? - C++
Ввести 4-х значное число. Верно ли, что в этом числе есть цифра, встречающаяся 2 и более раз.

Составить программу, которая определяет есть в заданном целом числе N цифра C - C++
Составить программу, которая определяет есть в заданном целом числе N цифра C

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nmcf
5309 / 4629 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
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
Модератор
Эксперт С++
1809 / 1166 / 226
Регистрация: 16.05.2013
Сообщений: 3,070
Записей в блоге: 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
5309 / 4629 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
15.04.2016, 15:15 #4
Ilot, я и не говорю, что лучшее. Просто рабочая версия того, что автор пытался сделать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2016, 15:15
Привет! Вот еще темы с ответами:

Определить, имеется ли в числе заданная цифра - C++
Определить, имеется ли в числе заданная цифра. очень срочно пожалуйста

Дано целое число N. Определите, есть ли в числе 2N цифра, равная введѐнной цифре К. - C++
Дано целое число N. Определите, есть ли в числе 2N цифра, равная введѐнной цифре К.

Определить, встречается ли цифра M в числе Р больше чем 2 раза - C++
Дано натуральное число Р. Определить, встречается заданная цифра M больше чем 2 раза. число p и цифру m вводить после кампиляции.

Определить сколько раз встречается максимальная цифра в числе - C++
Дано натуральное число. Определить, сколько раз в нем встречается максимальная цифра (например, для числа 132233 ответ равен 3, для числа...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.04.2016, 15:15
Ответ Создать тему
Опции темы

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