Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/79: Рейтинг темы: голосов - 79, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 04.02.2010
Сообщений: 8
1

Числа Армстронга

18.03.2010, 20:19. Показов 14322. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста решить задачу
Натуральное число, в записи которого n цифр, называется числом Амстронга, если сумма его цифр, возведенная в степень n, равна самому числу. Найти все числа Амстронга от 1 до k.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2010, 20:19
Ответы с готовыми решениями:

Числа Армстронга
Найти все трехзначиние и четырехзначные числа армстронга

Числа Армстронга
помогите пожалуйста 1. «Числа Армстронга». Натуральное число из N цифр является числом...

Числа Армстронга
!написать программу вычисления площади треугольника по формуле герона. Длины сторон треугольника...

Находение числа Армстронга на отрезке
С клавиатуры вводятся два натуральных числа а, б. Нафти на отрезке все числа Армстронга! Пример...

14
0 / 0 / 0
Регистрация: 04.02.2010
Сообщений: 8
23.03.2010, 22:54  [ТС] 2
Ну неужели никто помочь не может
0
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
23.03.2010, 23:03 3
Пример таких чисел можите привести?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
chislo:string[200];
 i,k,n,s,ercode,zn:integer;
 
BEGIN
writeln('Введите число');
readln(chislo);
 n:=length(chislo);
  s:=0;
  for i:=1 to length(chislo) do
    begin val(chislo,k,ercode); s:=s+k; end;
    
 val(chislo,zn,ercode);
 
 if exp(n*ln(abs(s))) = zn then writeln('Это число Армстронга!');
 
 END.
Проверьте, я не уверен, что правильно понял задание
0
0 / 0 / 0
Регистрация: 04.02.2010
Сообщений: 8
24.03.2010, 17:28  [ТС] 4
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, …
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
24.03.2010, 17:43 5
Pascal
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
uses crt;
function Armstrong(n:longint):boolean;
var t,m,p,s,i,j:integer;
    a,b:array[1..100]of integer;
begin
s:=0;
m:=n;
p:=0;
while m<>0 do
 begin
  inc(p);
  a[p]:=m mod 10;
  m:=m div 10
 end;
for i:=1 to p do
 begin
  b[i]:=1;
  for j:=1 to p do
  b[i]:=b[i]*a[i];
  s:=s+b[i];
 end;
if s=n then Armstrong:=true
else Armstrong:=false;
end;
var k,i:longint;
begin
clrscr;
write('vvedite chislo k=');
readln(k);
for i:=1 to k do
if Armstrong(i) then write(i,' ');
readln
end.
0
0 / 0 / 0
Регистрация: 04.02.2010
Сообщений: 8
25.03.2010, 20:23  [ТС] 6
Pascal
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
uses crt;
function Armstrong(n:longint):boolean;     
var t,m,p,s,i,j:integer;
    a,b:array[1..100]of integer;    задаём массив,кстати зачем 2 массива ?
begin                                        
s:=0;
m:=n;                                     приравниваем М входной переменной 
p:=0;
while m<>0 do                          если м не равно 0 то выполняем
 begin
  inc(p);                                  /как я понял эта функция должна увиличивать переменную только как
                                             /это работает я не понял , ни разу не сталкивался ещё с этим...
  a[p]:=m mod 10;                    / зачем мы это делаем ?
  m:=m div 10                          /
 end;
for i:=1 to p do                        / ну дальше вроде всё понятно....
 begin
  b[i]:=1;
  for j:=1 to p do
  b[i]:=b[i]*a[i];
  s:=s+b[i];
 end;
if s=n then Armstrong:=true
else Armstrong:=false;
end;
var k,i:longint;
begin
clrscr;
write('vvedite chislo k=');
readln(k);
for i:=1 to k do
if Armstrong(i) then write(i,' ');
readln
end.
объясните пожалуйтся))
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.03.2010, 21:01 7
Цитата Сообщение от andreypere Посмотреть сообщение
если м не равно 0 то выполняем
С каких пор while стало если? Это пока m<> 0, создаем массив из его цифр, отделяя по одной цифре с конца(mod 10) и сокращая его в 10 раз(div 10).

Добавлено через 1 минуту
inc(p) считает цифры, увеличивая счетчик не 1 = p:=p+1, образует размерность массива
0
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
25.03.2010, 21:34 8
andreypere, программы с посторчными комментариями во фрилансе. Стоимость у них соответсвенно другая.

Добавлено через 32 минуты
Puporev, смотри, написал через строковые, НО, почему-то на трехзначных числах не компилируется... 3 раза дебагом прошел, все выполняется, а результат выдает неверныё. Почему?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
program Armstrong;
 var
  s:string;
  i,ercode:integer;
  z,k,sum:real;
  
  BEGIN
  
  readln(s);
   val(s,z,ercode);
    if ercode<>0 then halt;
             sum:=0;
      for i:=1 to length(s) do
        begin val(s[i],k,ercode);
          if ercode<>0 then halt else
             if k<>0 then sum:=sum+exp(length(s)*ln(k)); end;
                
    if z=sum then writeln('Это число армстронга') else writeln('Нет, это не число Армстронга');
     end.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.03.2010, 21:55 9
У меня все компилируется. Например 371-число Армстронга.
0
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
25.03.2010, 21:57 10
Puporev, а 153 попробуй. У меня выдает, что не число Армстронга. abc паскаль что ли другой версии скачать...
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.03.2010, 22:00 11
Kizer, Выкинь ты нафиг это чудо, скачай с форума нормальный Турбо Паскаль.
У меня все считает.
Попробуй еще директиву написать, некоторые АВС их понимают.
Pascal
1
2
program Armstrong;
{$R-}
0
Gravemaker
25.12.2010, 12:05 12
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var
g,k,h:integer;
function arm:integer;
begin
while h>0 do
begin
h:=h mod 10;
arm:=arm+h;
end;
end;
function arm2:integer;
begin
arm2:=h div 10;
end;
BEGIN
h:=1;
writeln('BBeguTe k');
read(k);
for h:=1 to k do
g:=exp(ln(arm)*arm2);
if g=h then writeln('g=',g);
end.
Кто-нибудь может посмотреть и сказать почему она не работает? Что исправить, заранее спасибо..
Gravemaker
26.12.2010, 13:50 13
Цитата Сообщение от Puporev Посмотреть сообщение
У меня все компилируется. Например 371-число Армстронга.
153 попробуй. У меня выдает, что не число Армстронга. abc паскаль что ли другой версии скачать...
3+7+1 = 11 11^3=1331;
1+5+3 = 9 9^3=729

они не являются числами армстронга....
0 / 0 / 1
Регистрация: 03.02.2018
Сообщений: 5
03.02.2018, 16:40 14
Pascal
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
Program n1;
function st(a,b: integer): integer;
var i: integer;
begin
st:=1;
for i:=1 to b do st:=st*a;
end;
function ams(x: integer): boolean;
var k,t: integer;
sum: integer;
begin
ams:=false;
t:=x;
k:=0;
while x<>0 do
begin
x:=x div 10;
k:=k+1;
end;
x:=t;
sum:=0;
while t<>0 do
begin
sum:=sum+st(t mod 10,k);
t:=t div 10;
end;
if x=sum then ams:=true;
end;
var i,k: integer;
begin
readln(k);
for i:=1 to k do if ams(i) then write(i,' ');
end.
0
Платежеспособный зверь
8926 / 4354 / 1642
Регистрация: 28.10.2009
Сообщений: 11,568
03.02.2018, 17:46 15
AnonimusPro, не прошло и восьми лет...
0
03.02.2018, 17:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2018, 17:46
Помогаю со студенческими работами здесь

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

Найти все числа Армстронга в диапазоне от a до b
Найти все числа Армстронга в диапазоне от a до b, где a и b – целые натуральные числа. Написать...

Найти все трехзначные числа Армстронга
Найти все трехзгачные числа Амстронга( числа, равные сумме кубов своих цифр)

Найти все числа Армстронга в диапазоне от a до b
. Найти все числа Армстронга в диапазоне от a до b, где a и b – целые натуральные числа. Написать...


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

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