Программа на определение,является ли заданное число числом Армстронга |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Программа на определение,является ли заданное число числом Армстронга |
AonEVesT |
Сообщение
#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 - |
Федосеев Павел |
Сообщение
#2
|
Знаток Группа: Пользователи Сообщений: 481 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 9 |
Полагаю, ошибка в том, что
1) вычисления нужно проводить в целых числах, 2) выделенные цифры храните в массиве, в отдельной переменной храните количество цифр в числе. |
TarasBer |
Сообщение
#3
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
> if( a > arm)or (a< arm) then
1. Для этого есть оператор <> ("не равно") 2. Вещественные числа всё равно так сравнивать нельзя. Любое микрорасхождение из-за погрешности вычислений - и всё. Вещественные числа сравнивают так: if abs(a-arm)<eps then... -------------------- |
Текстовая версия | 25.05.2024 19:14 |