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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Движение точки http://www.cyberforum.ru/cpp-beginners/thread131483.html
Очень нужна помощь с таким заданием: написать движение точки по ломанному пути( туда и обратно ) на входе: массив точек - узлы ломанного пути и скорость точки( пиксел в секунду ) точка должна пройти все узлы и вернуться обратно в обратном порядке рисовать не обязательно - главное чтоб можно было увидеть в коде "механику" движения
C++ Написать рекурсивную функцию вычисления сочетания n то k Вот проблемка Написать рекурсивную функцию вычисления сочетания n то k. http://www.cyberforum.ru/cpp-beginners/thread131481.html
Сумма чисел C++
Дано натуральное число N. Вставить между некоторыми цифрами 1,2,3,4,5,6,7,8,9, записанными именно в таком порядке, знаки "+" и "-" так, чтобы значением получившегося выражения было число N. Например, если N=122, то подойдёт следущая расстановка знаков: 12+34-5-6+78+9. Помогите пожайлуста с кодом.
Ссылки и адреса C++
Вот, где лучше всего использовать адреса и ссылки? Просто не много не понятня для чего это все. Вот например эту запись int mas; int* pmas=&mas Чесно говоря, даже не понятно всего удобства. Зачем делать переменную *pmas если при обращении к ней или присваивании ей значения автоматически оно присваивается и mas... Буду благодарен за помощь.
C++ Перевод кода из Паскаля в С++ http://www.cyberforum.ru/cpp-beginners/thread131445.html
Я в С++ не бум бум, написал прогу на паскале а нуно на Си++ помогите перевести Задача : Назовем допустимым преобразованием матрицы перестановку двух строк или двух столбцов. Дана действительная квадратная матрица порядка n. С помощью допустимых преобразований добиться того, чтобы один из элементов матрицы обладающий наибольшим по модулю значением, располагался в левом верхнем углу матрицы....
C++ Последовательность фибоначи Дан фаил f компоненты u0,u1,....un которого являются последовательными числами Фибоначчи, получить в фаиле f последовательные числа Фибоначчи u0,u1,....u n+1(тобиж u эное +1) сама последовательность Фибоначчи - u0=0; u1=1; ui=u i-1 + ui-2 (i=2,3...) помогите с этой последовательностью я ни как не могу сделать эту прогу а через 2 дня ее сдавать! Пожалуйста люди помогите! заранее вам... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,664
19.05.2010, 07:43     Найти все натуральные числа, которые не превышают заданного N и деляться на каждую из своих цифр
alex_x_x, ваш пример неверно работает с числами, имеющими ноль в середине. Например выводит 701, 702.
Мне кажется, если писать понятнее, то меньше ошибок.
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
//Найти все натуральные числа, которые не превышают заданного N и делятся 
//на каждую из своих цифр.
#include <iostream>
#include <sstream>
 
const int N = 702;
 
bool delitsja_na_vse_cifry(int num)
{
    std::stringstream potok;
    potok << num;
    char dig_symb;   
    while(potok >> dig_symb)          
    {
        int dig = dig_symb - '0';
        if(dig && num % dig != 0) return false;        
    }
    return true;
}
 
int main()
{
    for(int cur_num = 1; cur_num <= N; ++cur_num)
    {
        if(delitsja_na_vse_cifry(cur_num))
        {
            std::cout << cur_num << std::endl;
        }
    }
    return 0;
}
Добавлено через 9 часов 56 минут
Я в предыдущем примере ноль за отсутствие цифры посчитал. Наверно вот так будет правильнее:
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
//Найти все натуральные числа, которые не превышают заданного N и делятся 
//на каждую из своих цифр.
#include <iostream>
#include <sstream>
 
const int N = 702;
 
bool delitsja_na_vse_cifry(int num)
{
    std::stringstream potok;
    potok << num;
    char dig_symb;   
    while(potok >> dig_symb)          
    {
        int dig = dig_symb - '0';
        if(!dig || num % dig != 0) return false;          
    }
    return true;
}
 
int main()
{
    for(int cur_num = 1; cur_num <= N; ++cur_num)
    {
        if(delitsja_na_vse_cifry(cur_num))
        {
            std::cout << cur_num << std::endl;
        }
    }
    return 0;
}
 
Текущее время: 15:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru