Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 10:54   #1
1man
Новичок
Джуниор
 
Регистрация: 20.12.2011
Сообщений: 2
Лампочка 1.Проблема при решении задания с использыванием цикла repeat.

Доброго времени суток! Долгое время не справляюсь с данной задачей. Намерен "добить" до конца, однако решить полноценно не получается.


Формулировка: Дана последовательность состоящая из n целых чисел.. Для всех симметричных чисел последовательности найти цифровой корень по алгоритму: Сложить все цифры введенного числа, затем его суммы и так повторять столько раз, пока с число не станет однозначным – это и будет цифровым корнем исходного числа.
Например: n=34697
S1=3+4+6+9+7=29; S2=2+9=11; S3=2. 2 - цифровой корень числа n.

-С определением симметричности числа проблем никаких.
-Основная проблема с вычислением цифрового корня по алгоритму.

Код программы определения цифрового корня(пробовал для одного числа):
Цитата:
program Project;

program Summa;

{$APPTYPE CONSOLE}

uses
SysUtils;


var n,s,s1: integer;

begin
write('BBedite 4iclo');
readln(n);
n:=abs(n);
S:=0;
begin
repeat
s:= (n mod 10);
n:= (n div 10);
s:=n;
until s<10;
end;
writeln ('S=',s);
readln;
end.
В итоге программа не работает должным образом. Какие могут быть соображения на эту тему? Или лучше сразу вводить код для последовательности чисел? Заранее благодарен за помощь.

Последний раз редактировалось 1man; 20.12.2011 в 11:40. Причина: Чуть подправил код.
1man вне форума Ответить с цитированием
Старый 20.12.2011, 16:22   #2
zhan313
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 44
По умолчанию

Код:
S1:=0;
repeat
s:= (n mod 10);
n:= (n div 10);
s1:=s1+s;
if n<10 then begin s1:=s1+n; n:=s1; s1:=0; end;
s:=n;
until s<10;
zhan313 вне форума Ответить с цитированием
Старый 20.12.2011, 22:42   #3
1man
Новичок
Джуниор
 
Регистрация: 20.12.2011
Сообщений: 2
По умолчанию

To->zhan313
Благодарю!
1man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка сигментации при решении задачи(((( Aisamiery Общие вопросы C/C++ 0 15.12.2011 11:26
Проблема с циклами Guap Помощь студентам 12 14.10.2010 21:39
Проблема с циклами в Паскале Tomas Anderson Помощь студентам 0 29.12.2009 19:28
Проблема при решении задач на Си TiLKiSS Помощь студентам 0 21.12.2009 12:30
мр3 проигрователь с использыванием bass Palach Мультимедиа в Delphi 14 09.06.2009 21:56