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

не могу разобраться.. - C++

Войти
Регистрация
Восстановить пароль
 
maloy8373
0 / 0 / 0
Регистрация: 25.12.2010
Сообщений: 3
26.12.2010, 23:27     не могу разобраться.. #1
Вывести на экран все натуральные числа из диапазона от A до B, в записи которых цифра 7 встречается ровно N раз. При отсутствии чисел с указанными свойствами выдать на экран сообщение “Требуемых чисел нет”. Границы диапазона A и B и значение N ввести с клавиатуры


Не получается сделать с числом N, не знаю даже как это сделать, чтобы выдавал только такие значения, сколько раз должно встречаться одинаковых цифр в числе, т.е. такое кол-во цифр=N


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
#include <iostream>
#include <locale>
 
int main()
{
long a, b, n;
setlocale(LC_ALL, "Rus");
std::cout << "Вести число N" << std::endl;
std::cin >> n ;
std::cout << "Ввести интервал (A и B)" << std::endl;
std::cin >> a >> b;
 
bool fl=false; 
for(long i = a; i <= b; i++)
 
if((i/100000+i%10==7) && ((i >10) || (i > 10000 && i < 99999)))
{
 
std::cout << i << " ";
std::cout << c << " ";
fl=true;}
if(!fl)
std::cout << "Требуемых чисел нет" << std::endl;
 
 
fflush(stdin); 
std::cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2010, 23:27     не могу разобраться..
Посмотрите здесь:

Не могу написать комментарии для функции поиска, не могу разобраться... C++ Builder
Не могу разобраться с С++ C++
Visual C++ Дейкстра не могу разобраться
C++ не могу разобраться с ветвлением
не могу разобраться C++ Builder
C++ Builder Не могу разобраться с If
C++ Не могу разобраться с 2D игрой
C++ Не могу разобраться с ООП
Не могу разобраться C++ WinAPI
C++ Не могу разобраться с ошибкой
C++ Не могу разобраться с кодом
C++ Табуляция, не могу разобраться

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
МаМи
Сообщений: n/a
26.12.2010, 23:43     не могу разобраться.. #2
не знаю на сколько точно, у меня вечно алгоритмы километровые но можно так - после того, как вы ввели N, создайте число которое нужно искать (N=3, m=777, правда это нужно делать в цикле m объявлять AnsiString или char [n] и в цикле записывать (т.е прибавлять к строке 7 каждый раз))
потом в цикле переводить число в строку искать есть ли вхождение m (если например число 12777 - нужно выводить ) если нужно выводить только 777, m перевести в int и сравнивать с вашими числами
реализация не ко мне, только идеи
maloy8373
0 / 0 / 0
Регистрация: 25.12.2010
Сообщений: 3
26.12.2010, 23:47  [ТС]     не могу разобраться.. #3
спасибо, идейка забавная, но чего я только не пробывал, хотя толком не разбираюсь...
Попробую ещё разок помучиться...
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
27.12.2010, 02:50     не могу разобраться.. #4
Для компиляции и запуска нужна студия 2010 или gcc 4.5+
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
49
50
51
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::vector<int> Vec;
    int A, B;
    std::cout<<"Enter A, B: ";
    std::cin>>A>>B;
    std::cout<<"Enter elements. | for end input\n";
    std::copy_if(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(), std::back_inserter(Vec), [&](int t) -> bool
        {
            if(t < A || t > B)
            {
                std::cout<<"Can`t insert this element. < A or > B\n";
                return false;
            }
            return true;
    });
    int N=0;
    std::cin.clear();
    std::cin.get();
    std::cout<<"Enter N: ";
    std::cin>>N;
    const int finded=7;
    std::vector<int> Results;
    std::for_each(Vec.begin(), Vec.end(), [&](int t)
    {
        std::vector<int> Vecs;
        int f=t;
        while(t)
        {
            Vecs.push_back(t%10);
            t/=10;
        }
        if(std::count(Vecs.begin(), Vecs.end(), finded) == N)
             Results.push_back(f);
    });
    if(!Results.size())
    {
        std::cout<<"There is no elements with "<< N <<" digits equal to "<< finded  <<'\n';
        system("pause");
        return 1;
    }
    std::cout<<"There is "<< Results.size() <<" elements with "<< N <<" digits equal to "<< finded <<'\n';
    std::copy(Results.begin(), Results.end(), std::ostream_iterator<int>(std::cout, " "));
    system("pause");
    return 0;
}
Yandex
Объявления
27.12.2010, 02:50     не могу разобраться..
Ответ Создать тему
Опции темы

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