Помощь - Поиск - Пользователи - Календарь
Полная версия: Программа на определение,является ли заданное число числом Армстронга
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
AonEVesT
Program zadacha;
Uses crt;
var arm,a1,a:real;
function armstrong(var x:real):real;
var k,x3,x2:integer;
p,z,s:real;
begin
p:=0;
x2:=trunc(x/1);
x3:=x2;
k:=0;
while x2>0 do
begin
k:=k+1;
x2:=x2 div 10 ;
end;
p:=0;
while x3 >0 do
begin
s:=x3 mod 10;
if s >0 then
begin
z:= exp(k*ln(s));
p:=p+z;
end;
x3:=x3 div 10;
end;
armstrong:=p;
end;
begin
Clrscr;
Writeln('vvedi a');
Readln(a);
a1:=a;
arm:=armstrong(a1);
if( a > arm)or (a< arm) then
Writeln('no')
else
Writeln ('yes');
readkey;
end.

Добавлено через 2 мин.
Проблемма в том,что после финального ветвления паскаль выводит no даже если ввели число Армстронга.В чём ошибка?
Федосеев Павел
Полагаю, ошибка в том, что
1) вычисления нужно проводить в целых числах,
2) выделенные цифры храните в массиве, в отдельной переменной храните количество цифр в числе.
TarasBer
> if( a > arm)or (a< arm) then

1. Для этого есть оператор <> ("не равно")
2. Вещественные числа всё равно так сравнивать нельзя. Любое микрорасхождение из-за погрешности вычислений - и всё. Вещественные числа сравнивают так: if abs(a-arm)<eps then...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.