С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
5 / 5 / 3
Регистрация: 14.11.2016
Сообщений: 94

Вывеести на экран все числа, от 0 до введенного с клавиатуры числа, в которых есть хотя бы одна цифра "2"

29.07.2017, 02:25. Показов 2913. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, не даёт покоя одна задачка:
вывести на экран все числа, от 0 до введенного с клавиатуры числа, в которых есть хотя бы одна цифра "2". Хотел через строку делать, но что то не догоняю.
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
#include<iostream>
#include<string>
#include<cstring>
#include<cstdlib>
 
using namespace std;
 
int main()
{
    string num;
    cout<<"Input a number: ";
    cin>>num;
    for (int i=0; i<=atoi(num.c_str()); i++)
    {
        for (int j=0; j<strlen(itoa(i)); j++)
        {
            string temp=itoa(i);    
            if (temp[j]=='2')
            {
                cout<<temp[j]<<endl;
            }
        }
    }
    system("pause");
    return 0;
}
Sobese.cpp:15 'itoa' was not declared in this scope

Буду признателен и за другие способы, не обязательно это улучшать.

Добавлено через 37 минут
Проблема решена, выкладываю рабочий код
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
#include <iostream>
#include <cstring>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    char num[sizeof(long double)];
    cout<<"Input a number: ";
    cin>>num;
    for (int i=0; i<=atoi(num); i++)
    {
        char temp[strlen(num)];
        itoa(i, temp, 10);
        for (int j=0; j<strlen(temp); j++)
        {
            if (temp[j]=='2')
            {
                cout<<temp<<endl;
            }
        }
    }
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.07.2017, 02:25
Ответы с готовыми решениями:

Найти все четырехзначные числа, в записи которых есть хотя бы одна цифра 4. Определите их количество
1. Задача . Найти все четырехзначные числа, в записи которых есть хотя бы одна цифра 4. Определите их количество. В тетради : блок - схема...

Удалить из массива числа – палиндромы, в которых есть хотя бы одна нечетная цифра
помогите написать программу на С++ Дан массив из N целых чисел, где N&lt;=16, каждое число в диапазоне от –32000 до 32000. Создать программу...

Удалить из массива числа – палиндромы, в которых есть хотя бы одна нечетная цифра
помогите написать программу на С++ Дан массив из N целых чисел, где N&lt;=16, каждое число в диапазоне от –32000 до 32000. Создать программу...

8
 Аватар для proghelp4you
62 / 62 / 34
Регистрация: 09.07.2017
Сообщений: 475
29.07.2017, 02:37
Knyaz_Myshkin, вот вариант немного проще
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 <iostream>
#include <string>
#include <conio.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int toNumber = 0;
 
    cout << "Введите число: ";
    cin >> toNumber;
 
    cout << "Найденные числа на интервале [0; " << toNumber << "], в которых есть цифра 2:" << endl;
    for (int currentNumber = 0; currentNumber <= toNumber; currentNumber++)
        if (to_string(currentNumber).find('2') != -1)
            cout << currentNumber << endl;
 
    _getch();
 
    return 0;
}
1
5 / 5 / 3
Регистрация: 14.11.2016
Сообщений: 94
29.07.2017, 13:44  [ТС]
'to_string' was not declared in this scope

не пашет этот вариант, даже со включенным с++11, компилятор MingW (-std=c++0x)
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
29.07.2017, 13:52
Лучший ответ Сообщение было отмечено Knyaz_Myshkin как решение

Решение

Цитата Сообщение от Knyaz_Myshkin Посмотреть сообщение
не пашет этот вариант
в mingw какой-то версии был такой баг.
можно эту функцию самому сделать.
C++
1
2
3
4
5
6
7
8
#include <sstream>
 
std::string to_string(int n)
{
  std::ostringstream strm;
  strm << n;
  return strm.str();
}
1
5 / 5 / 3
Регистрация: 14.11.2016
Сообщений: 94
29.07.2017, 21:29  [ТС]
Да, теперь пашет
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
29.07.2017, 21:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
bool has_digit(unsigned n, unsigned d) {
    return ( ( n % 10 ) == d ) ? true : ( n < 10 ) ? false : has_digit(n / 10, d);
}
 
int main() {
    unsigned n, d;
    
    while ( std::cout << "Top number: " && std::cin >> n && std::cout << "Needed digit: " && std::cin >> d && d < 10 )
        for ( unsigned i = 0; i <= n; ++i )
            if ( has_digit(i, d) )
                std::cout << i << std::endl;
    
    return 0;
}
1
5 / 5 / 3
Регистрация: 14.11.2016
Сообщений: 94
29.07.2017, 22:10  [ТС]
кстати, только заметил, мой способ выводит все числа с двойками, а способ с to_string почему то пропускает числа с 20 по 29 и после 129

способ от easybudda тоже рабочий
Миниатюры
Вывеести на экран все числа, от 0 до введенного с клавиатуры числа, в которых есть хотя бы одна цифра  "2"   Вывеести на экран все числа, от 0 до введенного с клавиатуры числа, в которых есть хотя бы одна цифра  "2"  
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
29.07.2017, 22:16
а у меня всё корректно работает:
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
#include <iostream>
#include <string>
#include <sstream>
 
namespace mylib
{
    std::string to_string(int n)
    {
      std::ostringstream strm;
      strm << n;
      return strm.str();
    }
}
 
using namespace std;
 
int main()
{
    int toNumber = 0;
 
    cout << "Введите число: ";
    cin >> toNumber;
 
    cout << "Найденные числа на интервале [0; " << toNumber << "], в которых есть цифра 2:" << endl;
    for (int currentNumber = 0; currentNumber <= toNumber; currentNumber++)
        if (mylib::to_string(currentNumber).find('2') != std::string::npos)
            cout << currentNumber << endl;
 
 
    return 0;
}
http://rextester.com/PDROE37817
input: 123
output:
Code
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
Введите число: Найденные числа на интервале [0; 123], в которых есть цифра 2:
2
12
20
21
22
23
24
25
26
27
28
29
32
42
52
62
72
82
92
102
112
120
121
122
123
0
5 / 5 / 3
Регистрация: 14.11.2016
Сообщений: 94
30.07.2017, 03:38  [ТС]
Что-то я перепутал, всё изначально норм работало)) просто я !=-1 поменял на ==true
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.07.2017, 03:38
Помогаю со студенческими работами здесь

Удалить все строки, в которых есть хотя бы одна цифра
С массива строк нужно удалить все строки, в которых есть хотя бы одна цифра. Помогите пожалуйста

Найти и вывести все слова текста, в которых есть хотя бы одна цифра
Дана последовательность символов. Найти и вывести все слова текста, в которых есть хотя бы одна цифра (в любом месте). \Заранее...

Выведите все числа у которых первая цифра меньше второй, меньшие введенного числа
Пользователь вводит натуральное двузначное число. Выведите все числа у которых первая цифра меньше второй, меньшие введенного числа.

Найти все целые числа из указанного промежутка в десятичной записи которых есть цифра, запрошенная с клавиатуры.
Найти все целые числа из указанного промежутка в десятичной записи которых есть цифра, запрошенная с клавиатуры.

Ввывести на экран все двузначнае натуральные числа в диапазоне от A до B, записи которых есть цифра 8
Ввывести на экран все двузначные натуральные числа в диапазоне от A до B, записи которых есть цифра 8.Определить их количество


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru