IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Программа на определение,является ли заданное число числом Армстронга
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


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 даже если ввели число Армстронга.В чём ошибка?

Сообщение отредактировано: AonEVesT -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Полагаю, ошибка в том, что
1) вычисления нужно проводить в целых числах,
2) выделенные цифры храните в массиве, в отдельной переменной храните количество цифр в числе.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> if( a > arm)or (a< arm) then

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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 15.05.2024 3:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name