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

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

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

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

11.12.2012, 03:03. Просмотров 516. Ответов 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     Вывести числа Армстронга, используя функцию
Посмотрите здесь:

Числа Армстронга. Алгоритм. C++
C++ Числа армстронга
числа Армстронга C++
Числа Армстронга C++
Вывести числа Армстронга от 1 до n C++
C++ Определить степень числа с целочисленным показателем, не используя функцию pow
C++ Числа Армстронга
Числа Армстронга C++
Получить числа Армстронга C++
Вывести все числа Армстронга в заданном интервале C++
C++ Заданы числа a и n. Найти а в степени n не используя соответствующую функцию. n
Числа* Армстронга C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4667 / 2493 / 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;
 
  }
Yandex
Объявления
11.12.2012, 11:51     Вывести числа Армстронга, используя функцию
Ответ Создать тему
Опции темы

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