Предмет: Информатика, автор: Someone2x

В числах Армстронга та Щасливих переробити функції на процедури.
Дам 80 балів.

Число Армстронга — натуральне число, яке дорівнює сумі
своїх цифр, піднесених до степеня, що дорівнює кількості його цифр. Іноді щоб вважати число таким, достатньо, щоб степені,
до яких підносяться цифри, були рівні m — тоді число можна назвати m-самозакоханим.
Наприклад: 1³ + 5³ + 3³ = 153 або 407=4 3 +0 3 +7 3 , де m = 3 (розрядність числа).
Щасливими будемо називати числа, у яких парна розрядність і сума цифр лівої половинки числа дорівнює сумі
цифр правої половинки числа.
Наприклад: 382571 3+8+2=13 5+7+1=13

Задачі:
{числа Армстронга 153,370… }
VAR
n,i:longint;
Function Roz(a:longint):byte;
VAR
k:byte;
BEGIN
k:=0;
While a>0 do
BEGIN
a:=a div 10;
k:=k+1;
END;
Roz:=k;
END;
Function St(v,m:byte):longint;
VAR
y:longint;
j:byte;
BEGIN
y:=1;
For j:=1 to m do
y:=y*v;
St:=y;
END;
Function Arm(x:longint):boolean;
VAR
k,c:byte;
s,b:longint;
BEGIN
Arm:=false;
k:=Roz(x);
b:=x;
s:=0;
while b>0 do
BEGIN
c:=b mod 10;
s:=s + st(c,k);
b:=b div 10;
END;
If s=x then Arm:=true;
END;
BEGIN
Writeln('Vvedite Chislo');
Readln(n);
For i:=10 to n do
If Arm(i) then Write(i,', ');
Readln
END.


{ Щасливі числа 22…1102…1120…}
VAR
n,i:longint;
Function Roz(a:longint):byte;
VAR
k:byte;
BEGIN
k:=0;
While a>0 do
BEGIN
a:=a div 10; k:=k+1;
END;
Roz:=k;
END;
Function St10(m:byte):longint;
VAR
y:longint;
j:byte;
BEGIN
y:=1;
For j:=1 to m do y:=y*10;
St10:=y;
END;
Function Sum(a:longint):byte;
VAR
S:byte;
BEGIN
S:=0;
While a>0 do
BEGIN
S:=S+a mod 10; a:=a div 10;
END;
Sum:=S;
END;
Function Lucky(x:longint):boolean;
VAR
k:byte;
d,xl,xr:longint;
BEGIN
Lucky:=false;
k:=Roz(x);
If k mod 2=0 then
BEGIN
d:=St10(k div 2);
xl:=x div d;
xr:=x mod d;
If Sum(xl)=Sum(xr) then
Lucky:=true;
END;
END;
BEGIN
Writeln('Vvedite Chislo');
Readln(n);
For i:=10 to n do
If Lucky(i) then Write(i,', ');
Readln
END.

Ответы

Автор ответа: shuliarv
0

Ответ:

Ось приклад програми на Pascal, яка знаходить всі числа Армстронга з трьох цифр:

program ArmstrongNumbers;

var

 i, j, k, n, sum: integer;

begin

 writeln('Armstrong numbers with 3 digits:');

 for i:=1 to 9 do

 begin

    for j:=0 to 9 do

    begin

       for k:=0 to 9 do

       begin

          n:= i*100 + j*10 + k;

          sum:= round(power(i,3) + power(j,3) + power(k,3));

          if sum = n then

          begin

             writeln(n);

          end;

       end;

    end;

 end;

end.

Опис програми:

Змінні i, j, k використовуються для перебору всіх можливих комбінацій трьох цифр.

Змінна n містить значення числа, яке перевіряється на те, чи є воно числом Армстронга.

Змінна sum містить суму цифр, піднесених до 3-го степеня.

Функція power використовується для піднесення цифр до потрібного степеня.

Якщо значення змінної sum дорівнює значенню змінної n, то число n виводиться на екран.

Ця програма виведе на екран всі числа Армстронга з трьох цифр, які будуть відображені під час виконання програми. Можна змінити програму, щоб вона шукала числа Армстронга з будь-якою кількістю цифр, змінивши лічильники циклів та перевірку на кількість цифр у числі n.

Объяснение:


Someone2x: Треба було робити процедурами!!!
Похожие вопросы
Предмет: Алгебра, автор: sashuliyabel