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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2009, 19:38   #1
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
Вопрос Вопросы о некоторых задачах

Во-первых, уже не первый раз вижу задачи, в которых написано что-то вроде "Даны буквы "Y U O M O X". X - маркер конца последовательности". Я их всегда решал, беря массив элементов эдак под 1000, чтоб точно хватило, ведь в Pascal'е динамические массивы не делаются. Но может есть какая-то хитрость с маркером, а иначе зачем это пишут?
Второе, уже всю голову сломал, как решать задачи такого типа:
Цитата:
Во время поездки на поезде девочка заменила в названии поезда
каждую букву ее номером в русском алфавите и получила запись из
единиц и двоек "211221-21221". Определить откуда и куда идет по-
езд?
Это самая легкая из этой темы, а у меня даже тут не получается Тут вроде какой-то очень хитрый цикл нужен?
k1r1ch вне форума Ответить с цитированием
Старый 19.10.2009, 20:41   #2
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Во втором можно динамически оформить, есть подобная классическая задача - посчитать количество слов, которые можно так закодировать. Сдесь чуть иначе - генерируем все слова и смотрим перебором, какие из них имеют смысл. В динамике на шаге каждой буквы проверяем 2 варианта - может ли быть приписана буква с 2значным номером к словам, сгенереным из цифр до (текущая-2), и может ли быть приписана буква с 1значным номером к словам, сгенереным из цифр до(текущая-1). Второе всегда возможно, первое невозможно, если 2значное число, которое мы првоверяем, больше за количество букв в алфавите.
LeBron вне форума Ответить с цитированием
Старый 19.10.2009, 23:27   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а вот и решение задачки с поездом и девочкой:
Код:
const
  Rus = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
  
  function DecodeOne(inS : string) : string;
  var i,iErr : integer;
  begin
    val(inS,i,iErr);
    DecodeOne := Copy(Rus,i,1)
  end;

  procedure  GetVariant(DeCodeS, s0 : string);
  begin
    if length(s0) = 0 then begin WriteLn(DeCodeS); exit end;
    if length(s0) = 1 then  WriteLn(DeCodeS+DecodeOne(s0))
    else
      begin
        GetVariant(DeCodeS+DecodeOne(copy(s0,1,1)), copy(s0,2,255));
        GetVariant(DeCodeS+DecodeOne(copy(s0,1,2)), copy(s0,3,255));
      end
  end;

var s : string;
begin
  s := '211221';
  WriteLn('Декодирование строки ',s);
  GetVariant('',s);
  WriteLn('------ расчёт окончен! -----');
  s := '21221';
  WriteLn('Декодирование строки ',s);
  GetVariant('',s);
  WriteLn('------ расчёт окончен! -----');
end.
и, как ни удивительно, у этой задачки есть вразумительный ответ...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.10.2009, 13:24   #4
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

А это называется рекурсия вроде?
Код:
  procedure  GetVariant(DeCodeS, s0 : string);
  begin
    if length(s0) = 0 then begin WriteLn(DeCodeS); exit end;
    if length(s0) = 1 then  WriteLn(DeCodeS+DecodeOne(s0))
    else
      begin
        GetVariant(DeCodeS+DecodeOne(copy(s0,1,1)), copy(s0,2,255));
        GetVariant(DeCodeS+DecodeOne(copy(s0,1,2)), copy(s0,3,255));
      end
  end;
Даа... Я бы не додумался, еще учиться мне и учиться...
Попытаюсь разобраться!
k1r1ch вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в задачах Pascal. Fox91 Помощь студентам 9 06.12.2009 17:24
Не могу найти ошибки в задачах Кипятилка Помощь студентам 4 01.07.2009 17:58
Импорт и удаление некоторых строк Alex2008 Microsoft Office Excel 3 06.05.2008 18:26
Программирование процедур в задачах обработки текста Numi_Pumi Помощь студентам 5 20.12.2007 17:04
Проверьте ошибки пожалуйста в задачах. velgelmina Помощь студентам 3 09.06.2007 22:10