Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
21 / 21 / 1
Регистрация: 05.01.2011
Сообщений: 173
1

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

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

Author24 — интернет-сервис помощи студентам
Задание следующее:
Найти числа Армстронга до опр. числа, введенного пользователем. (Числа Армстронга - числа с количеством цифр 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, хотя это не число армстронга.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2011, 20:48
Ответы с готовыми решениями:

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

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

Найти ошибку в программе нахождения числа с обратным расположением цифр
Можете подсказать что исправить , что бы возвратить число с обратным расположением цифр. ...

Найти ошибку в программе нахождения числа с обратным расположением цифр
Можете подсказать что исправить или заменить , что бы возвратить число с обратным расположением...

2
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
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;
}
1
21 / 21 / 1
Регистрация: 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 убирает её.
0
13.01.2011, 22:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2011, 22:33
Помогаю со студенческими работами здесь

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

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

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

Цикл: Найти все трехзначные числа Армстронга.
Информатика, 1 курс, прошу помочь с программой Число Армстронга – такое число из k цифр, для...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru