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

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

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

 
 Ответить  Открыть новую тему 
> Рекурсия, Как правильно оформить
Guest
сообщение 16.12.2007 12:10
Сообщение #1


Гость






Помогите оформиить данну задачу с помощью рекурсии(делится число на 3 или нет):
Uses
Crt;
var
p:longint;
s:byte;
Procedure Input;
begin
write('p= ');
readln(p);
end;
Procedure Rass4et;
begin
s:=0;
repeat
s:=s+p mod 10;
until (p<>1);
end;
Procedure Output;
begin
if (s mod 3)=0 then
WriteLn('Yes')
else('No');
end;
Begin
ClrScr;
Input;
Rass4et;
Output;
ReadKey;
End.
 К началу страницы 
+ Ответить 
Гость
сообщение 16.12.2007 14:02
Сообщение #2


Гость






Неужели никто не подскажит
 К началу страницы 
+ Ответить 
volvo
сообщение 16.12.2007 14:12
Сообщение #3


Гость






А что, в данном виде программа правильно решает задачу? Мне почему-то так не кажется... Кроме всего прочего - она вообще не откомпилируется. Так что сначала реши задачу правильно, а потом будешь переделывать через рекурсию...

Куда катится мир? Уже проверку делится ли число на 3 делают рекурсивно...
 К началу страницы 
+ Ответить 
Гость
сообщение 16.12.2007 14:35
Сообщение #4


Гость






Исправил:

Program Lab12;
Uses
Crt;
Var
p:LongInt;
s:Byte;
Procedure Input;
Begin
ClrScr;
Write('p=');
ReadLn(p);
End;
Procedure Rass4et;
Begin
s:=0;
repeat
s:=s+p mod 10;
p:=p div 10;
until(p<>1);
End;
Procedure Output;
Begin
if (s mod 3)=0 then
WriteLn('Yes')
else
WriteLn('No');
End;
BEGIN
Input;
Rass4et;
Output;
ReadKey;
END.


p.s. просто по заданию надо оформить ее в виде рекурсии...а вот как рекурсию применить к данной задаче я не могу чет догнать
 К началу страницы 
+ Ответить 
Гость
сообщение 16.12.2007 15:29
Сообщение #5


Гость






Что то типо такого получается:
function rass4et; 
begin
s:=s+p mod 10;
p:=p div 10
if p<> 0 then rass4et;
end;
?
 К началу страницы 
+ Ответить 
Гость
сообщение 16.12.2007 15:36
Сообщение #6


Гость






Всё, решил сам, но только с использованием стринговых значений...попозже доделаю и выложу сюда
 К началу страницы 
+ Ответить 
volvo
сообщение 16.12.2007 16:01
Сообщение #7


Гость






Строки здесь вообще не при чем, прекрасно делается без них:

procedure Rass4et(p: integer);
begin
if p = 0 then s := 0
else begin
rass4et(p div 10);
s := s + (p mod 10);
end;
end;

 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 5.06.2024 4:14
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"