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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2009, 21:14   #1
TOSAgrk
Пользователь
 
Регистрация: 01.02.2009
Сообщений: 13
По умолчанию Pascal. рекурсия.

Разработать рекурсивную функцию которая выделяет определенную цифру от 0 до 9 из десятичной записи натурального числа и выводит ее на экран. На основе разработанной функции вывести на экран десятичную запись заданных натуральных чисел а) в зворотнему порядке бы) в прямом начиная со старших разрядов дополнительно разработать не рекурсивный вариант.


ето не рекурсивный вариант


Код:
uses crt, math;
var a, rez_od1, rez_des1, rez_des2, rez_sot1, rez_sot2, rez_tus:integer;
begin
clrscr;
writeln('Vvedit chuslo vid 0 do 999: ');
readln(a);
if a < 10 then
begin
rez_od1:=a;
writeln('Odunuci ',rez_od1);
end;
if (a>=10) and (a<100) then
begin
rez_od1:=a mod 10;
writeln('Odunuci = ', rez_od1);
rez_des1:= a div 10;
writeln('Desjati =', rez_des1);
end;
if (a>=100) and (a<1000) then
begin
rez_od1:= a mod 10;
writeln('Odunuci = ', rez_od1);
writeln;
rez_des1 := a div 10;
rez_des2 := rez_des1 mod 10;
writeln('Desjati = ', rez_des2);
writeln;
rez_sot1 := a div 100;
{rez_sot2 := rez_sot1 div 10;}
writeln('Soti = ', rez_sot1);
writeln;
end;
readln;
{readln;}
end.

нужна помощь с рекурсивным..
TOSAgrk вне форума Ответить с цитированием
Старый 03.02.2009, 21:26   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
uses crt;
var a : integer;

procedure rec(n,d : integer);
var m : integer;
 begin
 if n = 0 then exit;
 m := n mod 10;
 case d of
 1 : writeln('Odunuci ', m);
 2 : writeln('Desjati =', m);
 3 : writeln('Soti = ', m);
 else writeln('Error');
 end;
 inc(d);
 n := n div 10;
 rec(n,d);
 end;

begin
clrscr;
writeln('Vvedit chuslo vid 0 do 999: ');
readln(a);
rec(a,1);
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.02.2009, 12:05   #3
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Я как понял нужно перевернуть заданное натуральное число с помощью рекурсии.
тогда зачем так мудрить?
Вот вот код смотрите:
Код:
var n:int64;
procedure p(x:int64);
begin 
write(x mod 10);
x:=x div 10;
if x>0 then p(x);
end;
begin
readln(n);
p(n);
end.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия Claster Помощь студентам 7 24.09.2008 20:52
рекурсия Vital_k Паскаль, Turbo Pascal, PascalABC.NET 1 08.02.2008 13:09
Рекурсия АнНютик Паскаль, Turbo Pascal, PascalABC.NET 1 29.01.2008 22:50
Рекурсия Pravednik Помощь студентам 3 21.01.2008 14:18
Рекурсия Xeon332 Помощь студентам 5 16.01.2008 20:52