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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2011, 18:01   #11
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

baster128

я так делала

Код:
program rek;
uses crt;
var input,output:string;
    begin
       clrscr;
function reverse(inputparametr,outputparametr:string) :string;
     begin
         if  (inputparametr= ' ' )    then
              begin
               writeln(' otvet: ', outputparametr);
             end
       else
             begin
             outputparametr:=outputparametr+inputparametr[lenght(inputparametr)-1];
             end;
     end;
.....
а дальше идей нет...


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 15.02.2011 в 19:38.
Novenkaja вне форума Ответить с цитированием
Старый 15.02.2011, 18:07   #12
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

new man

всё,я задала result там где был var st:string добавила туда var st,result:string

теперь компилирует,но ничего не выдаёт в ране,т.е. пишу слово,чтобы наоборот читалось так же,а после написиания слова,нажимаю энтер и всё,из рана он выходит
Novenkaja вне форума Ответить с цитированием
Старый 15.02.2011, 18:11   #13
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Дружище! Прости за ради бога, но этот код никакого отношения к твоей задаче не имеет. Ты спрашивала "что такое рекурсия?" Я пример привел. Если тебе полностью программу писать, то это не ко мне. Ребят тут много за деньги все напишут.
baster128 вне форума Ответить с цитированием
Старый 15.02.2011, 18:13   #14
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

baster128

да я уже поняла,что ты это привёл как наглядный пример, всё равно спасибо)))

Последний раз редактировалось Novenkaja; 15.02.2011 в 18:26.
Novenkaja вне форума Ответить с цитированием
Старый 15.02.2011, 18:43   #15
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

кто-нибудь ещё может помочь с эти заданием?
посмотрите то,что написала я выше,у меня вообще мысль,идея решения задания верна?
код не дописан,т.к. дальше не знаю,что написать....
Novenkaja вне форума Ответить с цитированием
Старый 15.02.2011, 19:17   #16
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

у кого-нибудь есть какие-то идеи по поводу того,как решить это задание? я не могу долго сидеть за компьютером, а задание нужно преподователю отправить сегодня.

буду очень благодрна и признательна тому, кто сможет помочь в решение задания (т.е. код, который компилируется и заодно идёт в ране)
Novenkaja вне форума Ответить с цитированием
Старый 15.02.2011, 19:35   #17
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Вроде все работает
Код:
function recObm(s:string):string;
begin
    if length(s)=1 then recObm:=S
    Else
    RecObm:=S[Length(S)]+recObm(copy(s,1, length(s)-1));
end;
var st:string;
begin
  readln(st);
  Writeln(recObm(st));
  Readln
End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 15.02.2011, 19:38   #18
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

сейчас введу а прогрумму и посмотрю
Novenkaja вне форума Ответить с цитированием
Старый 15.02.2011, 19:42   #19
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

GetMax

ого,такой оказывается короткий код????
да,компилируется и в ране выдаёт палиндромом))))

спасибо тебе огромное)))
счастью моему нету придела

можешь только объяснить пожалуйста,что выполняется в этой строке?

RecObm:=S[Length(S)]+recObm(copy(s,1, length(s)-1));
Novenkaja вне форума Ответить с цитированием
Старый 15.02.2011, 19:44   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Novenkaja

правильное решение дал New man
(пост #7)

единственное, ключевое слово RESULT появилось в более поздних модификациях Паскаля, в TurboPascal такого не было,
поэтому вместо result надо просто напросто писать имя функции. (кстати, это касается всех функций, к рекурсии это отношении НЕ ИМЕЕТ).
И, если бы Вы почитали, как пишутся ЛЮБЫЕ функции в Паскаль, Вы бы легко подправили код так, как нужно!

Код:
program Rec;

function recObm(s:string):string;
begin
    if length(s)>1 then
     begin
        recObm:=s[length(s)]+recObm(copy(s,2, length(s)-2))+s[1];
     end
     else
       recObm:=s;
end; 

var st:string;
begin
  WriteLn('Введите исходное слово (строку): ');
  readln(st);
  writeln('Результат: ',recObm(st));
  readln;
end.


ДОБАВЛЕНО
Цитата:
Сообщение от GetMax
Код:
S[Length(S)]+recObm(copy(s,1, length(s)-1));
GetMax, ну да, согласен. так ещё проще и понятнее!


Novenkaja
RecObm := S[Length(S)]+recObm(copy(s,1, length(s)-1));
читаем: вернуть в функцию_палиндрома строку, равную последний символ строки с приписанным к нему результатом функции_палиндрома(параметер: строка без последнего символа)

Последний раз редактировалось Serge_Bliznykov; 15.02.2011 в 19:49.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на рекурсию Rusl92 Помощь студентам 1 13.01.2011 22:36
Задача на рекурсию(( kinza Помощь студентам 6 08.06.2009 09:51
Задача на рекурсию. KoHgpaT Паскаль, Turbo Pascal, PascalABC.NET 4 22.12.2006 20:49