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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
Igorek94
2 / 2 / 0
Регистрация: 30.10.2012
Сообщений: 45
#1

числа Армстронга - C++

30.10.2012, 08:25. Просмотров 2277. Ответов 7
Метки нет (Все метки)

Помогите пожалуйста с написанием кода
Среди чисел от 1 до 1000 найти все числа Армстронга. Число Армстронга - натуральное число, которое в данной системе счисления равно сумме своих цифр, возведённых в степень, равную количеству его цифр (например, 153=13+53+33)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
30.10.2012, 11:22     числа Армстронга #2
Что конкретно не понятно?
Igorek94
2 / 2 / 0
Регистрация: 30.10.2012
Сообщений: 45
30.10.2012, 11:23  [ТС]     числа Армстронга #3
я не могу понять как это можно описать
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
30.10.2012, 11:25     числа Армстронга #4
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
#include <iostream>
#include <cmath>
 
int main() 
{ 
  int figure = 0, summa = 0; 
  double n = 10; 
  int  i, a, b, st; 
 
  for ( i = 1; i < 1000; i++) 
  { 
      a = b = i; 
      while(a) 
      { 
          a /= 10; 
          figure++;
      } 
      st = pow(n, figure-1);
      while(b) 
      { 
          summa += pow((double)(b / st), figure); 
          b %= st; 
          st /= 10;
      } 
 
      if(summa == i) 
          std::cout << i << "  Armstrong number " << std::endl; 
      figure = 0; 
      summa = 0; 
  } 
}
Igorek94
2 / 2 / 0
Регистрация: 30.10.2012
Сообщений: 45
30.10.2012, 11:26  [ТС]     числа Армстронга #5
а если не сложно, то можно объяснить написанный код
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
30.10.2012, 11:31     числа Армстронга #6
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
#include <iostream>
#include <cmath>
 
int main() 
{ 
  int figure = 0, summa = 0; 
  double n = 10; 
  int  i, a, b, st; 
 
  for ( i = 1; i < 1000; i++) 
  { 
      a = b = i; 
      while(a) // считаем количество цифр в числе
      { 
          a /= 10; 
          figure++;
      } 
      st = pow(n, figure-1); // возводим 10 в степень количества цифр - 1
      while(b) // разбиваем число на цифры
      { 
          summa += pow((double)(b / st), figure); //считаем сумму
          b %= st; 
          st /= 10;
      } 
 
      if(summa == i) // если сумма равно исходному значит это число Армстронга
          std::cout << i << "  Armstrong number " << std::endl; 
      figure = 0; 
      summa = 0; 
  } 
}
смотри комментарии
Igorek94
2 / 2 / 0
Регистрация: 30.10.2012
Сообщений: 45
30.10.2012, 11:35  [ТС]     числа Армстронга #7
спасибо большое

Добавлено через 3 минуты
а что надо добавить в код, чтобы ответ не сразу с экрана убирался??
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2012, 11:39     числа Армстронга
Еще ссылки по теме:

Числа Армстронга C++
Получить числа Армстронга C++
C++ Получить все числа Армстронга
C++ Не выводятся все числа Армстронга
Числа* Армстронга C++

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

Или воспользуйтесь поиском по форуму:
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
30.10.2012, 11:39     числа Армстронга #8
system("Pause");
Yandex
Объявления
30.10.2012, 11:39     числа Армстронга
Ответ Создать тему
Опции темы

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