Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> АБРАКАДАБРА 
:(
    Опции темы
Aleche
Дата 9.12.2004, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 4.11.2004
Где: Воронеж

Репутация: нет
Всего: 5



Привет,ребята!!!! Есть очень интересная задача! Есть какие-нибудь версии решения?
ЗАДАЧА:
Последовательность из латинских букв строитсся следующим образом.На первом шаге она пуста.На каждом последующем шаге она удваивается,после чего к ней слева дописывается очередная буква латинского алфавита .Пример построения:

Пстая последовательность:
ШАГ 1 a
ШАГ2 baa
ШАГ3 cbaabaa
...................
Задача сотоит в том ,чтобы по заданному числу n определить символ ,который стоит на n-ом месте в послндовательности,получившейся после 26 шага!!!!!!!!!!!!!!!!!!!!!!!!!(ПРОСЬБА ОПИСАТЬ ПРОДЕЛАННЫЕ ВАМИ ОПЕРАЦИИ)
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 9.12.2004, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Что-то очень знакомо... smile
Я же писал... не работает что ли... smile
PM   Вверх
Akina
Дата 9.12.2004, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Гораздо проще создавать алгоритм, если считать не от начала, а от конца строки... все становится совершенно тривиально... N(i)=2*N(i-1)


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Aleche
Дата 10.12.2004, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 4.11.2004
Где: Воронеж

Репутация: нет
Всего: 5



НЕ РАБОТАЕТ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 10.12.2004, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Я так и думал, если про моё... smile
PM   Вверх
Elfin
Дата 13.12.2004, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 28.10.2004

Репутация: нет
Всего: нет



а в чем собсна проблема?
Код

program Project2;

{$APPTYPE CONSOLE}

uses
 SysUtils;

var str: string; n: integer; c: char;

begin
str:='';
for C:='a' to 'z' do
str:=c+str+str;; //в конце цикла мы найдем результат 26-го шага
readln(n);
writeln(str[n]); //выведем н-ный символ строки
readln;
 { TODO -oUser -cConsole Main : Insert code here }
end.


Это сообщение отредактировал(а) Elfin - 13.12.2004, 14:08
PM MAIL   Вверх
Pakshin A. S.
Дата 13.12.2004, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Ага... они строки не проходили... smile Так все могут!
Добавлено @ 13:13
А 255 символов хватит? Т. к. паскаль... smile
PM   Вверх
Pakshin A. S.
Дата 13.12.2004, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Вот, пример решения (не тестил, не оптимизировал):
Код

const
dv: array [1..15] of char = ('d','c','b','a','a','b','a','a','c','b','a','a','b','a','a');
nm=37;

type
TM = array [1..nm] of char;
TTp = (t_dv, t_mas);

procedure Create(tp: TTp; c: Char; var l: integer; var m: TM);
var
i,j:integer;
begin
l:=0;
j:=1;
if tp = t_mas
 then
  for i:=ord(c) downto ord('e') do
   begin
    m[j]:=chr(i);
    inc(j);
   end;
for i:=j to j+15 do
 m[i]:=dv[i-j+1];
l:=j-1;
end;

var
m:Tm;
l:integer;
n:integer;
c:char;
b:boolean;
begin
readln(n);
if n = 1
 then
  begin
   writeln('z');
   readln;
  end
 else
  begin
   n:=n-1;
   Create(t_mas, 'y', l, m);
   b:=l >= n;
   if b
    then
     begin
      writeln(m[n]);
      readln;
      Exit;
     end
    else
     n:=n - l;
   for c:='e' to 'y' do
    begin
     Create(t_dv, 'a', l, m);
     b:=l >= n;
     if b
      then
       begin
        writeln(m[n]);
        readln;
        exit;
       end
      else
       n:=n - l;
     Create(t_mas, c, l, m);
     b:=l >= n;
     if b
      then
       begin
        writeln(m[n]);
        readln;
        exit;
       end
      else
       n:=n-l;
    end;
   for c:='x' downto 'e' do
    begin
     Create(t_dv, 'a', l, m);
     b:=l >= n;
     if b
      then
       begin
        writeln(m[n]);
        readln;
        exit;
       end
      else
       n:=n - l;
     Create(t_mas, c, l, m);
     b:=l >= n;
     if b
      then
       begin
        writeln(m[n]);
        readln;
        exit;
       end
      else
       n:=n-l;
    end;
  end;
end.

PM   Вверх
Aleche
Дата 18.12.2004, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 4.11.2004
Где: Воронеж

Репутация: нет
Всего: 5



Привет!!!!!!!!!!! Жаль, что ты,Pakshin A.S. ,не тестил программу!!!!Решение,наверное, интересное,но что-то длинное.
А Я НАКОНЕЦ-ТО ПРИДУМАЛА РЕШЕНИЕ . РАБОТАЕТ!!!!!!!!!!!!!!!!!!!!
ВОТ ПРОГРАММА:
program symbol;
const
maxn=26;
var
a:array[1..maxn]of longint;
k,n:longint;
begin
readln(n);
a[1]:=1;
for i:=1 to maxn-1 do
begin
a[i+1]:=1+2*a[i];
writeln(a[i]);
end;
writeln(a[maxn]);
for k:=26 downto1 do{цикл для посл-ти}
begin
if n=1 then write(chr('a')+k-1);break end
else begin
if n>a[k-1]+1 then n:=n-1-a[k-1] else n:=n-1;
end;
end;
end.
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 18.12.2004, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Ни фига себе!!! Сама придумала?! smile
Добавлено @ 19:32
М
 
Гы-гы... выложи нормальный вариант, а то в этом куча ошибок!!!
+ Пользуйся тегами [code=delphi][/code]

Добавлено @ 19:37
Вот... подправил...
Код

const
maxn=26;
var
 a:array[1..maxn]of longint;
 k,n:longint;
 i:integer;
begin
 readln(n);
 a[1]:=1;
 for i:=1 to maxn-1 do
   a[i+1]:=1+2*a[i];
 for k:=26 downto 1 do
  begin
   if n=1
    then
     begin
      write(chr(ord('a') + k - 1));
      break
    end
   else
    if n>a[k-1]+1
     then
      n:=n-1-a[k-1]
     else n:=n-1;
  end;
end.


Поясни алгоритм... smile
PM   Вверх
Aleche
Дата 19.12.2004, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 4.11.2004
Где: Воронеж

Репутация: нет
Всего: 5



НУ ,ВО-ПЕРВЫХ, ПРИВЕТ ,С УВАЖЕНИЕМ , Пакшин Андрей Сергеевич!!!!!!!!!!!!! ВО-ВТОРЫХ,ПРОГРАММА РАБОТАЕТ И ОШИБОК НЕТ,СТРАННО,КАК ТЫ МОГ НЕ ЗАМЕТИТЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Кстати,нехорошо заниматься плагиатством!!!!!!!Ну да ладно,алгоритм следующий:
1) сначала генирирую длину последовательности на каждом шаге;
2)начиная с последнего шага,проверяю является-ли введенный номер пользователем 1,если да,то выведется нужная буква алфавита,если нет,то продолжаю поиск следующим образом:n:=(n-1)moda[k-1]<=>n:=n-1-a[k-1]+1;т.к .,если ты заметил посл-ть симметрична ,исключая n=1. ; smile
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 19.12.2004, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Ни фига себе! Сама додумалась!!! Поздравляю... зауважал... smile
P. S. Я плагиатством не занимаюсь, а просто подправляю код, выложенный на форуме...
PM   Вверх
mvdr
Дата 3.2.2005, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

Репутация: нет
Всего: 42



Код

var mas=array[a,b,c,...,x] of string;
    mas1=array[el1,el2,...el27] of string;
    i,n:integer;
    simbol,stroka:string;
begin
mas1[1]:='';
for i:=1 to 26 do
mas1[i+1]:= mas[i] + mas1[i];
stroka:=mas[27];
simbol:=copy(stroka,n,1);
end;



--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
Pakshin A. S.
Дата 3.2.2005, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Этот код понятный, но они еще не проходили строковый тип, поэтому она не мога его использовать... smile
PM   Вверх
Marriage
Дата 3.2.2005, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



ОЛимпиада ???

Это сообщение отредактировал(а) Marriage - 3.2.2005, 13:24


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.