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

Числа Армстронга...Немогу решить - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ метод итераций http://www.cyberforum.ru/cpp-beginners/thread147679.html
ребят помогите пжлст решить задачки: 1. Дана целочисленная прямоугольная матрица. Определить количество строк, содержащих хотя бы один нулевой элемент. Определить номер столбца, в котором находится самая длинная последовательность одинаковых элементов. 2. Определить приближенное значение корня уравнения x-tgx=0 с помощью метода итераций, если его начальное приближение x0=4,5 , а точность...
C++ Нужно написать программу шефрования и дешифрования AES 128 в Microsoft Visual Studio Нужно написать программу шефрования и дешифрования AES 128 в Microsoft Visual Studio Или где можно скачать, нашел только для Delphi а нужно именно на СИ! http://www.cyberforum.ru/cpp-beginners/thread147673.html
Динамические массивы C++
пишу функции по сложению умножению делению и вычитанию полиномов void sub(){ int x,y; cout<<"vvod stepeni A(x): "; cin>>x; cout<<"vvod stepeni B(x): "; cin>>y; double *x1 = new double;
Изменение названия файла C++
Здравствуйте! Нужно динамически изменить название файла на с++ напободие такого: #include <stdio.h> #include <fstream> #include <cstdlib> main () { for(int i=0;i<10;i++) {
C++ Построение графика С++ Win32App http://www.cyberforum.ru/cpp-beginners/thread147658.html
Люди добрые, помогите с задачей, пожалуйстааа :) Вроде бы как написала, но стиль окна какой-то кривой, график не точный :( в чем проблема, не знаю :wall: Условие: Нарисовать графики функций: 2*a*cos(kх)*exp(-nх). А, K и N – константы, T – аргумент функции. Значения A, K, N жестко кодируются в программе. T изменяется от 0 до текущей ширины экрана(для примера взяла до 100). #include...
C++ Заполнить секторы матрицы Помогите, пожалуйста, очень надо! 1.Вводится последовательность ненулевых чисел, 0 — конец последовательности. Определить является ли последовательность строго возрастающей 2.Заполнить секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей ЛП, от левого верхнего угла вправо- вниз. Остаток матрицы заполнить нулями. 3.Во всех последовательностях положительных чисел... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
20.06.2010, 18:29     Числа Армстронга...Немогу решить
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//Натуральное число, в записи которого n цифр, называется числом Армстронга, 
//если сумма его цифр, возведенных в степень n, равна самому числу. 
//Найти все чис-ла Армстронга от 1 до к.
#include <cmath>
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
#include <sstream>
#include <string>
 
typedef std::string       T_str;
typedef std::vector<int>  T_nums;
 
struct T_plus_dig_pow
{
    int stepen_;    
    T_plus_dig_pow(int stepen) : stepen_(stepen)
    {}
    int operator() (int sum, char char_dig)
    {
        return  sum += static_cast<int>(pow(static_cast<double>(char_dig - '0'), stepen_));        
    }
};
 
bool is_not_armstrong_num(int n)
{
    std::ostringstream  dig_str_potok;
    dig_str_potok << n;
    T_str  dig_str(dig_str_potok.str());
    return n != std::accumulate(dig_str.begin(), dig_str.end(), 
                                0, T_plus_dig_pow(dig_str.size()));
}
 
struct T_generate_podrjad
{
    int begin_num_;
    T_generate_podrjad(int  begin_num) : begin_num_(begin_num)
    {}
 
    int operator() ()
    {
        return begin_num_++;
    }
};
 
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите k: ";
    int k;
    std::cin >> k;
    const int  start_num = 0;
    std::cout << "Числа Армстронга в диапазоне от "
              << start_num
              << " до "
              << k
              << ": "
              << std::endl;
    T_nums  nums(k - start_num + 1);
    std::generate(nums.begin(), nums.end(), T_generate_podrjad(start_num));
    std::remove_copy_if(nums.begin(), nums.end(), 
                        std::ostream_iterator<int>(std::cout, "\n"), is_not_armstrong_num);
    return 0;
}
 
Текущее время: 18:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru