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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
maks_IQ
21 / 21 / 0
Регистрация: 05.01.2011
Сообщений: 173
#1

числа Армстронга, найти ошибку в программе - C++

13.01.2011, 20:48. Просмотров 831. Ответов 2
Метки нет (Все метки)

Задание следующее:
Найти числа Армстронга до опр. числа, введенного пользователем. (Числа Армстронга - числа с количеством цифр n, сумма цифр возведенных в n степень которых равна самому числу.
Например 153 - число Армстронга, т.к. 1³ + 5³ + 3³ = 153)

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
int main()
{
    setlocale(LC_ALL,"rus");
    double massiv[10000]; int step=0; int m=1; int glav=0; int glav1=0;
    int n=0;
    cout<<"Введите значение, до которого нужно найти числа Армстронга\n";
    cin>>n;
 
    for (int i=0;i<n;i++)
    {
        step=0; double a=0;
        massiv[i]=i+1; a=massiv[i];
        while(a>=1)
        {
            a/=10;
            step++;
        }
        for (int j=1;j<step;j++)
        {
            glav=glav+glav1;
 
        glav1=pow((double(int((massiv[i]/(10*m)-int(massiv[i]/(10*m))*10)))),double(step)); // тут конечно все запутано, но [I][U]вроде[/U][/I] правильно
            m*=10;
        }
        if (glav==massiv[i])
        {cout<<massiv[i];}
    }
    _getch();
    return EXIT_SUCCESS;
}
попробовал выполнить, но программа не работает. Вернее, работает, но не так как нужно:
она выводит 81, хотя это не число армстронга.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2011, 20:48     числа Армстронга, найти ошибку в программе
Посмотрите здесь:

Найти ошибку в программе возведения числа в степень - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cmath&gt; using namespace std; int a; int b; int c; float r; int d; int...

Помогите найти ошибку в программе составления палиндрома числа - C++
Вот програма в которой вводится число а потом высверивается массив из этих чисел, а также составляет палиндром ( палиндром это числа типа...

Найти все числа Армстронга от 1 до K - C++
2)натуральное число, в записи которого n цифр, называется числом Армстронга, а если сумма его цифр, возведенная в степень n, равна самому...

Найти все числа Армстронга от 1 до к - C++
1)Определить, делителем каких чисел а, в, с является число к. 2)Составить программу, которая печатает таблицу умножения натуральных...

Найти все числа Армстронга, состоящие из 2, 3 или 4 цифр - C++
Натуральное число, состоящее из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-й степени, равен самому числу...

Найти все n-значные числа Армстронга для данного n<9 - C++
Натуральное n-значное число называется числом Армстронга, если оно равно сумме n-х степеней своих цифр. Найти все n-значные числа...

Найти ошибку в программе - C++
Программа должна используя Дерево выводить список игроков сначала всех играющих в основном составе ниже играющих в резерве.... она же...

Найти ошибку в программе - C++
Где ошибка в программе: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; #include &quot;conio.h&quot; #include &quot;string&quot; ...

Найти ошибку в программе - C++
Помогите найти ошибку. #include &lt;iostream&gt; using namespace std; int main() { int a,kol=0,koll=0;

Найти ошибку в программе - C++
Решаю задачу: Вот мой код: #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; int main()

Найти ошибку в программе - C++
Найти ошибку в программе(связано с неправильным использованием указателя). Как можно исправить ошибку? #include &lt;iostream&gt; using...

Найти ошибку в программе - C++
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;vector&gt; using namespace std; int main(){ int n; cin&gt;&gt;n; vector&lt;int&gt;...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
13.01.2011, 22:02     числа Армстронга, найти ошибку в программе #2
maks_IQ, Ошибок много, если идти тем путем которым Вы пошли то вот вариант:
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
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
 
int main()
{
        setlocale(LC_ALL,"rus");
        double massiv[10000]; int step=0; int m=1; int glav=0; int glav1=0;
        int n=0;
        cout<<"Введите значение, до которого нужно найти числа Армстронга\n";
        cin>>n;
 
        for (int i=0;i<n;i++)
        {
                step=0; double a=0;
                massiv[i]=i+1; a=massiv[i];
                while(a>=1)
                {
                        a/=10;
                        step++;
                }
                glav=0; glav1=massiv[i]; 
                for (int j=0;j<step;j++)
                {
                        glav=glav+pow((double)(glav1%10), (double)step);
                        glav1/=10; 
    
                }
                if (glav==massiv[i])
                {cout<<massiv[i]<<endl;}
        }
        _getch();
        return EXIT_SUCCESS;
}
maks_IQ
21 / 21 / 0
Регистрация: 05.01.2011
Сообщений: 173
13.01.2011, 22:33  [ТС]     числа Армстронга, найти ошибку в программе #3
valeriikozlov, все работает, спасибо;

но не могли бы вы прокомментировать изменениния? в частности
C++
1
2
3
4
5
6
for (int j=0;j<step;j++)
                {
                        glav=glav+pow((double)(glav1%10), (double)step);
                                                glav1/=10; 
    
                }
и что делает %?

Добавлено через 14 минут
Цитата Сообщение от maks_IQ Посмотреть сообщение
и что делает %?
Все, я сам понял. glav1%10 возвращает последнюю цифру числа, а glav1/=10 убирает её.
Yandex
Объявления
13.01.2011, 22:33     числа Армстронга, найти ошибку в программе
Ответ Создать тему
Опции темы

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