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

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

Войти
Регистрация
Восстановить пароль
 
delexa
2 / 2 / 1
Регистрация: 02.03.2011
Сообщений: 134
#1

Вывести числа Армстронга, используя функцию - C++

11.12.2012, 03:03. Просмотров 521. Ответов 1
Метки нет (Все метки)

В чем ошибка?

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
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
int Armstrong(int);
 
int main() 
{  int z;
    cout<<"Programma vivodit vse chisla Armstronga ot 1 do n"<<endl;
    cout<<"Vvedite n= "; cin>>z;
    cout<<"Chisla Armstronga : "<<endl;
  for ( int i = 1; i < z; i++) 
     cout<<Armstrong(i)<<endl;
   system ("pause");
  return 0;
 
}
  
 
int  Armstrong (int o)
      { int  i=o, a, b, step, arm; 
        int kolvocifr = 0, summa = 0; 
      a = b = i; 
      while(a) // считаем количество цифр в числе
      { 
          a /= 10; 
          kolvocifr++;
      } 
 
      step = pow(10, kolvocifr-1); // возводим 10 в степень количества цифр - 1
      while(b) // разбиваем число на цифры
      { 
          summa += pow((double)(b / step), kolvocifr); //считаем сумму
          b %= step; 
          step /= 10;
      } 
 
      if(summa == i) // если сумма равно исходному значит это число Армстронга
          arm=i;
    return arm;
  }
выдает при компиляции 1>c:\users\delexa\documents\visual studio 2012\projects\consoleapplication4\consoleapplication4\consoleapplication4.cpp : fatal error C1853: файл предкомпилированного заголовка "Debug\ConsoleApplication4.pch" создан в предыдущей версии компилятора или предкомпилированный заголовок C++ используется из C (или наоборот)

Добавлено через 24 минуты
Перезапустил компьютер, создал новый проект. Ошибка исчезла.
немного поправил код. выводятся не те числа. Где ошибка?

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
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
int Armstrong(int);
 
int main() 
{  int z;
    cout<<"Programma vivodit vse chisla Armstronga ot 1 do n"<<endl;
    cout<<"Vvedite n= "; cin>>z;
    cout<<"Chisla Armstronga : "<<endl;
  for ( int i = 1; i < z; i++) 
    cout<<Armstrong(i)<<endl;
   system ("pause");
  return 0;
 
}
  
 
int  Armstrong (int i)
      { int a, b, step, arm; 
        int kolvocifr = 0, summa = 0; 
      a = b = i; 
      while(a) // считаем количество цифр в числе
      { 
          a /= 10; 
          kolvocifr++;
      } 
 
      step = pow(10, kolvocifr-1); // возводим 10 в степень количества цифр - 1
      while(b) // разбиваем число на цифры
      { 
          summa += pow((double)(b / step), kolvocifr); //считаем сумму
          b %= step; 
          step /= 10;
      } 
 
      if(summa == i) // если сумма равно исходному значит это число Армстронга
      {      arm=i;
      return arm;}
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2012, 03:03     Вывести числа Армстронга, используя функцию
Посмотрите здесь:

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

Вывести все числа Армстронга в заданном интервале - C++
Здравствуйте, В универе дали задание: вывести все числа Армстронга в интервале ; Понимаю что это уже давно сделали, но я хотел свою...

Числа Армстронга. Алгоритм находит не все числа - C++
Написал алгоритм поиска чисел Армстронга. Однако столкнулся со странной (на мой взгляд) проблемой: при компиляции с помощью MinGW...

Заданы числа a и n. Найти а в степени n не используя соответствующую функцию. n - C++
Заданы числа a и n. Найти а в степени n не используя соответствующую функцию. n

числа Армстронга - C++
Помогите пожалуйста с написанием кода Среди чисел от 1 до 1000 найти все числа Армстронга. Число Армстронга - натуральное число, которое...

Числа Армстронга - C++
помогите написать в си#

Числа Армстронга - C++
Не понимаю почему не работает, помогите пожалуйста. Натуральное число из n цифр является числом Армстронга, если сумма его цифр,...

Числа армстронга - C++
Подскажите где ошибка, результат выдает не верный. Подскажите пжл где не верно. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

Числа* Армстронга - C++
Помогите, пожалуйста Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в N‐ную степень (где N – ...

Числа Армстронга - C++
смотри фото,помогите написать прогу в си ++


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
11.12.2012, 11:51     Вывести числа Армстронга, используя функцию #2
Цитата Сообщение от delexa Посмотреть сообщение
Где ошибка?
Ошибка в логике программы. См комментарии:
Цитата Сообщение от delexa Посмотреть сообщение
C++
1
int Armstrong(int);
Цитата Сообщение от delexa Посмотреть сообщение
C++
1
2
for ( int i = 1; i < z; i++) 
 cout<<Armstrong(i)<<endl;// каким бы ни было число i (число Армстронга или нет) все равно что-то выведется
Пробуйте так:
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
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
bool Armstrong(int);
 
int main() 
{  int z;
    cout<<"Programma vivodit vse chisla Armstronga ot 1 do n"<<endl;
    cout<<"Vvedite n= "; cin>>z;
    cout<<"Chisla Armstronga : "<<endl;
  for ( int i = 1; i <= z; i++) 
      if(Armstrong(i))
          cout<<i<<endl;      
   system ("pause");
  return 0;
 
}
  
 
bool  Armstrong (int i)
      { int a, b, step, arm; 
        int kolvocifr = 0, summa = 0; 
      a = b = i; 
      while(a) // Г±Г·ГЁГІГ*ГҐГ¬ êîëè÷åñòâî öèôð Гў ÷èñëå
      { 
          a /= 10; 
          kolvocifr++;
      } 
 
      //step = pow(10, kolvocifr-1); // âîçâîäèì 10 Гў Г±ГІГҐГЇГҐГ*Гј êîëè÷åñòâГ* öèôð - 1
      while(b) // Г°Г*çáèâГ*ГҐГ¬ ÷èñëî Г*Г* öèôðû
      { 
          summa += (int)pow((double)(b %10), (double)kolvocifr); //Г±Г·ГЁГІГ*ГҐГ¬ ñóììó
          b /=10;
        //  step /= 10;
      } 
 
      if(summa == i) // åñëè ñóììГ* Г°Г*ГўГ*Г® èñõîäГ*îìó Г§Г*Г*Г·ГЁГІ ГЅГІГ® ÷èñëî ÀðìñòðîГ*ГЈГ*
          return true;
      return false;
 
  }
Ответ Создать тему
Опции темы

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