Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 3
Регистрация: 14.11.2016
Сообщений: 82
1

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

29.07.2017, 02:25. Показов 688. Ответов 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2017, 02:25
Ответы с готовыми решениями:

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

Найти все целые числа из промежутка от 1 до 100, у которых есть цифра "7"
Найти все целые числа из промежутка от 1 до 100, у которых есть цифра &quot;7&quot;. Как-бы не старался не...

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

В записи числа N, введенного с клавиатуры, заменить все "двойки" на "тройки
Здравствуйте, дорогие программисты. Мы в школе изучаем Паскаль. Помогите, пожалуйста, решить две...

8
61 / 61 / 34
Регистрация: 09.07.2017
Сообщений: 475
29.07.2017, 02:37 2
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;
}
0
2 / 2 / 3
Регистрация: 14.11.2016
Сообщений: 82
29.07.2017, 13:44  [ТС] 3
'to_string' was not declared in this scope

не пашет этот вариант, даже со включенным с++11, компилятор MingW (-std=c++0x)
0
Любитель чаепитий
3587 / 1687 / 519
Регистрация: 24.08.2014
Сообщений: 5,708
Записей в блоге: 1
29.07.2017, 13:52 4
Цитата Сообщение от 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
2 / 2 / 3
Регистрация: 14.11.2016
Сообщений: 82
29.07.2017, 21:29  [ТС] 5
Да, теперь пашет
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11032 / 6984 / 1651
Регистрация: 25.07.2009
Сообщений: 12,739
29.07.2017, 21:53 6
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
2 / 2 / 3
Регистрация: 14.11.2016
Сообщений: 82
29.07.2017, 22:10  [ТС] 7
кстати, только заметил, мой способ выводит все числа с двойками, а способ с to_string почему то пропускает числа с 20 по 29 и после 129

способ от easybudda тоже рабочий
0
Миниатюры
Вывеести на экран все числа, от 0 до введенного с клавиатуры числа, в которых есть хотя бы одна цифра  "2"   Вывеести на экран все числа, от 0 до введенного с клавиатуры числа, в которых есть хотя бы одна цифра  "2"  
Любитель чаепитий
3587 / 1687 / 519
Регистрация: 24.08.2014
Сообщений: 5,708
Записей в блоге: 1
29.07.2017, 22:16 8
а у меня всё корректно работает:
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:
Код
Введите число: Найденные числа на интервале [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
2 / 2 / 3
Регистрация: 14.11.2016
Сообщений: 82
30.07.2017, 03:38  [ТС] 9
Что-то я перепутал, всё изначально норм работало)) просто я !=-1 поменял на ==true
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2017, 03:38

В зависимости от введенного с клавиатуры числа вывести на экран строку "Чётное число"/"Нечётное число"
В зависимости от введенного с клавиатуры числа вывести на экран строку &quot;Чётное число&quot;/&quot;Нечётное...

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

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

Дана строка, состоящая из слов, разделенных пробелом. Определить количество слов, в которых есть хотя бы одна буква "а", или "А"
Дана строка, состоящая из слов, разделенных пробелом. Определить количество слов, в которых есть...


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

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

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