Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 11.12.2007, 21:39   #1
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Abracodabra#

HELLO,WORLD
Вот несколько дней назад участвовал в олимпиаде по программированию и сейчас, так сказать, провожу разбор полетов:
Вот одна задачка, которую я не решил на олимпиаде:
Задача С Метод бутерброда
Секретное агентство «Super-Secret-no» решило для шифрования переписки своих сотрудников использовать «метод бутерброда». Сначала буквы слова нумеруются в таком порядке: первая буква получает номер 1, последняя буква -номер 2, вторая - номер 3, предпоследняя - номер 4, потом третья ... и так для всех букв (см. рисунок). Затем все буквы записываются в шифр в порядке своих номеров. В конец зашифрованного слова добавляется знак «диез» (#), который нельзя использовать в сообщениях.
Например, слово «sandwich» зашифруется в «shacnidw#».
Вложение 5292
К сожалению, программист «Super-Secret-no», написал только программу шифрования и уволился. И теперь агенты не могут понять, что же они написали друг другу. Помогите им.
Формат входных данных
Вводится слово, зашифрованное методом бутерброда. Длина слова не превышает 20 букв.
Формат выходных данных
Выведите расшифрованное слово. Пример
Вложение 5293
А вот мой вариант решения (неправильный):
uses crt;
var
s:string[21];
s1:string[20];
d:integer;
i1,i2:integer;
begin
clrscr;
readln (s);
d:=length (s);
delete (s,d,1);
i2:=0;
for i1:=1 to d div 2 do begin
s1[i1]:=s[i1];
s1[d-i2]:=s[i1+1];
i2:=i2+1;
end;
for i1:=1 to 20 do begin
write (s1[i1]);
end;
readkey;
end.
Решал на Pascal.
Может кто знает, как решать?
(Offline)
 
Ответить с цитированием
Старый 11.12.2007, 22:03   #2
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Счастье Re: Abracodabra#

Я был на этой олимпиаде!!!
Решил, но непомню как?!?
Решал на QBasic(Знал лучше всех)
Решать несложно!!!

Первую цифру в начало(1 символ), вторую в конец(последний символ),
третью после первой(2 символ), четвертую перед последней(предпоследний символ),
...
(Offline)
 
Ответить с цитированием
Старый 11.12.2007, 22:12   #3
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Re: Abracodabra#

незнаю что у тебя написано, но алгоритм расшифровки думаю будет таким: берем зашифрованное слово, сначало записываем в новое слово(расшифровка) нечетные буквы, затем четные и получаем на выходе расшифрованное слово.
 const shifrslovo$
global iskomoeslovo$

lenght = len(shifrslovo$)
for n = 1 to lenght Step 2
    a$ = mid(shifrslovo$, n, 1)
    iskomoeslovo$=iskomoeslovo$+a$
next

for m = 2 to lenght Step 2
    a$ = mid(shifrslovo$, m, 1)
    iskomoeslovo$=iskomoeslovo$+a$
next

Print iskomoeslovo$
(Offline)
 
Ответить с цитированием
Старый 11.12.2007, 22:37   #4
zheland
Разработчик
 
Регистрация: 18.10.2007
Сообщений: 349
Написано 64 полезных сообщений
(для 95 пользователей)
Re: Abracodabra#

Ты не правильно понял:
Вот зашифрованное:
1029384756
Вот как ты расшифровал:
1234509876
Вот как надо:
1234567890
Надо чётные записывать с конца!
(Offline)
 
Ответить с цитированием
Старый 11.12.2007, 22:44   #5
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Re: Abracodabra#

а ,нуда, извиняюсь.
...
for m = lenght to 2 lenght Step -2
    a$ = mid(shifrslovo$, m, 1)
    iskomoeslovo$=iskomoeslovo$+a$
next
(Offline)
 
Ответить с цитированием
Старый 16.12.2007, 17:33   #6
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Abracodabra#

Только вот длина слова (без решетки) бывает разная: по числу символов и по четности или нечетности этого числа.
Проверка же идет не только по этому слову, ну и по любому другому, зашифрованному этим способом. Если число символов нечетное, то символ, расположенный (d div 2) будет потерян.
Первая часть кода однозначно будет выглядеть так:
uses crt;
var
s:string[21];
s1:string[20];
d:integer;
...
begin
clrscr;
readln (s);
d:=length (s);
delete (s,d,1);
...
(Offline)
 
Ответить с цитированием
Старый 16.12.2007, 18:52   #7
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Re: Abracodabra#


А меня вот собираються тож на олимпиаду послать. Заставят, млин, на паскале решать. Мы его в школе учим, я его ненавижу. Вот бы на КуБасике можно было)
(Offline)
 
Ответить с цитированием
Старый 16.12.2007, 20:34   #8
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Re: Abracodabra#

эх... вот вам исправленный вариант, надеюсь теперь все верно:
const shifrslovo$
global iskomoeslovo$

lenght = len(shifrslovo$)
for n = 1 to lenght Step 2
    a$ = mid(shifrslovo$, n, 1)
    iskomoeslovo$=iskomoeslovo$+a$
next

d# = lenght Mod 2
if d#<>0 then lenght2=lenght-1 Else lenght2=lenght

for m = lenght2 to 2 Step -2
    a$ = mid(shifrslovo$, m, 1)
    iskomoeslovo$=iskomoeslovo$+a$
next

Print iskomoeslovo$
(Offline)
 
Ответить с цитированием
Старый 16.12.2007, 20:53   #9
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Abracodabra#

Это на бейсике?
Буду переводить на Pascal или С++...
(Offline)
 
Ответить с цитированием
Старый 25.12.2007, 16:14   #10
Fla
ПроЭктировщик
 
Регистрация: 22.12.2007
Сообщений: 107
Написано 15 полезных сообщений
(для 15 пользователей)
Re: Abracodabra#

Москва? Торту такую давали, я не пошол, т.к. не хотел в каникулы переться в москву на какую-то 5 часовую олимпиаду...
(Offline)
 
Ответить с цитированием
Старый 25.12.2007, 23:31   #11
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Abracodabra#

Моя была 3 часовая!
(Offline)
 
Ответить с цитированием
Старый 25.12.2007, 23:32   #12
dector
Модератор
 
Регистрация: 21.12.2006
Сообщений: 564
Написано 79 полезных сообщений
(для 203 пользователей)
Re: Abracodabra#

Ну да - старичкам трудновато далеко перебиратся) В твои-то 82..

у нас по закону 5 часов.
но гады сказали что 1 час идет на набор программ - я в шоке! и забрали у нас час.
(Offline)
 
Ответить с цитированием
Старый 25.12.2007, 23:55   #13
Fla
ПроЭктировщик
 
Регистрация: 22.12.2007
Сообщений: 107
Написано 15 полезных сообщений
(для 15 пользователей)
Re: Abracodabra#

Укуреные идиоты, как можно решать задачи на листочке? Без дебагера, без возможности проверки работоспособности.

*Все это идет, что бы своих протолкнуть. А делается это элементарно - комуто ставятся ',' и ';' лишние, а комуто тупо пишут.
**Такова жизнь
(Offline)
 
Ответить с цитированием
Старый 26.12.2007, 00:08   #14
dector
Модератор
 
Регистрация: 21.12.2006
Сообщений: 564
Написано 79 полезных сообщений
(для 203 пользователей)
Счастье Re: Abracodabra#

Да не думаю что кто-то своих пропихает.а может...

Укуреные идиоты, как можно решать задачи на листочке? Без дебагера, без возможности проверки работоспособности.
Ты к чему клонишь?
Если ты про них - то я согласен немного.Ведь мы не пишем программу на листочке. А потом вводим. Это смешно - олимпиада по информатике на бумажке всеравно что конкурс вышивания без иголки с ниткой и ткани)
(Offline)
 
Ответить с цитированием
Старый 26.12.2007, 00:33   #15
Fla
ПроЭктировщик
 
Регистрация: 22.12.2007
Сообщений: 107
Написано 15 полезных сообщений
(для 15 пользователей)
Re: Abracodabra#

Конечно же про организаторов.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:55.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com