IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Перестановки в слове
setare
сообщение 27.11.2006 17:40
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 152
Пол: Женский

Репутация: -  0  +


Здравствуйте!!!!
Появилась маленькая проблема в решении задачи. Преподаватель мне задал такую задачу: вводится слово, нужно сделать в нем перестановки: первый символ остается первым, второй становится последним, третий символ становится вторым, четвертый символ становится предпоследним и тд. Например:
abcdef
Result: acefdb
abcde
acedb
Проблема в том, что не понятна зависимость. Плюс преподавателя не будет до конца недели, когда уже надо сдавать. И не очень понятно как писать программу с использованием именно перестановок.


--------------------
Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.11.2006 17:48
Сообщение #2


Гость






Ну, по условию получается, что если позиция символа (назовем ее P) НЕчетная, то нужно переставить символ в позицию: (P div 2 + 1), а если четная, то в позицию (length(s) - (P div 2)) + 1, так?
 К началу страницы 
+ Ответить 
setare
сообщение 27.11.2006 17:55
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 152
Пол: Женский

Репутация: -  0  +


Цитата(volvo @ 27.11.2006 17:48) *

Ну, по условию получается, что если позиция символа (назовем ее P) НЕчетная, то нужно переставить символ в позицию: (P div 2 + 1), а если четная, то в позицию (length(s) - (P div 2)) + 1, так?

Честно говоря, я что-то не очень поняла, как это получится. А если работать через массив данных, а не через строчку? Просто нам сказали вводить эти симолы через массив.


--------------------
Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 27.11.2006 18:13
Сообщение #4


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


тогда вместо length(s) поставишь размерность массива


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
setare
сообщение 27.11.2006 18:24
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 152
Пол: Женский

Репутация: -  0  +


А вот, если делать это в цикле, как можно из одного массива (исходного) таким образом перезаписать в другой? Просто присваиванием : например p- размерность:
if (i mod 2=0)
ch[i+1]=ch2[i];
else
ch[(p-i)+1]=ch2[i];
Нужно работать с двумя максимум массивами!


--------------------
Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.11.2006 18:28
Сообщение #6


Гость






ch_1 - исходный массив, ch_2 - полученный ...
for i := 1 to P do
  if i mod 2 <> 0 then ch_2[(i div 2) + 1] := ch_1[i]
  else ch_2[(P - (i div 2)) + 1] := ch_1[i];
Больше двух массивов и не нужно smile.gif
 К началу страницы 
+ Ответить 
setare
сообщение 27.11.2006 18:32
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 152
Пол: Женский

Репутация: -  0  +


Цитата(volvo @ 27.11.2006 18:28) *

ch_1 - исходный массив, ch_2 - полученный ...
for i := 1 to P do
  if i mod 2 <> 0 then ch_2[(i div 2) + 1] := ch_1[i]
  else ch_2[(P - (i div 2)) + 1] := ch_1[i];
Больше двух массивов и не нужно smile.gif

Огромное Вам спасибо! Сейчас попробую! smile.gif


--------------------
Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
setare
сообщение 30.11.2006 18:13
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 152
Пол: Женский

Репутация: -  0  +


Всем здравствуйте! Я вот через несколько дней после вашей подсказки подумала, и поняла, что это же все таки не перестановка. Может быть, я конечно ошибаюсь, но честно здесь можно использовать именно алгоритм перестановки или же здесь нет такой зависимости. Я имею ввиду получить этот же результат, но не смотреть на четные и нечетные позиции элементов и копирование их ы другой массив?


--------------------
Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 30.11.2006 18:20
Сообщение #9


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


blink.gif
а если смотреть на четность - это уже не перестановка?
обойтись одним массивом можно... но зачем?
определись, чего ты хочешь...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
setare
сообщение 30.11.2006 18:36
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 152
Пол: Женский

Репутация: -  0  +


Вообще-то я говорила, что именно мне нужна перестановка. Потому что когда мы проверяем на четность+ копируем элементы в другой массив, это уже не считается перестановкой.


--------------------
Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 30.11.2006 18:38
Сообщение #11


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


а если проверяем, но не копируем, а работаем с этим же - перестановка?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
setare
сообщение 30.11.2006 18:45
Сообщение #12


Бывалый
***

Группа: Пользователи
Сообщений: 152
Пол: Женский

Репутация: -  0  +


Как я понимаю, да. smile.gif Если работать в одном массиве. Просто я лично старалась найти зависимость в этой перестановке, чтобы именно в одном массиве переставлять символы, например:
abcdef
1)afcdeb
2)afcedb
3)acfedb
4)acefdb
тут будет 4 перестановки. Но как-то повторяемости нет. Мне задалди задание именно написать перестановку, а я как бы просто пишу копирование. rolleyes.gif Поэтому спрашиваю, может быть, все таки кто-то увидит здесь повторяемость! smile.gif


--------------------
Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 1.12.2006 0:40
Сообщение #13


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Просматриваем массив с конца. Если элементов нечётное число - начинаем с последнего элемента, если чётное - со второго. Алгоритм: символ пропускаешь, следующий переносишь в конец, следующий пропускаешь, следующий переносишь в конец... Это можно считать перестановками?


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 1.12.2006 1:06
Сообщение #14


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Вот ещё один алгоритм: то, что подчёркнуто, надо перевернуть (записать наоборот).
abcdefgh
ahgfedcb
acdefghb
achgfedb
acefghdb
acehgfdb
Стоит попробовать упростить алгоритм. Буду думать.

Сообщение отредактировано: Archon - 1.12.2006 1:07


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 1.12.2006 8:50
Сообщение #15


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


По утру ещё один свежий алгоритм в голову пришёл. Смысл такой: меняем местами соседние буквы в слове, начиная сперва со второй, потом с 3-ей, с 4-ой и тд. Вот так (дефис - меняем местами):
a b-c d-e f-g h
a c b-e d-g f-h
a c e b-g d-h f
a c e g b-h d-f
a c e g h b-f d
a c e g h f b-d
a c e g h f d b
Пожалуй лучший способ.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
setare
сообщение 1.12.2006 19:25
Сообщение #16


Бывалый
***

Группа: Пользователи
Сообщений: 152
Пол: Женский

Репутация: -  0  +


Цитата(Archon @ 1.12.2006 8:50) *

По утру ещё один свежий алгоритм в голову пришёл. Смысл такой: меняем местами соседние буквы в слове, начиная сперва со второй, потом с 3-ей, с 4-ой и тд. Вот так (дефис - меняем местами):
a b-c d-e f-g h
a c b-e d-g f-h
a c e b-g d-h f
a c e g b-h d-f
a c e g h b-f d
a c e g h f b-d
a c e g h f d b
Пожалуй лучший способ.

Здравствуйте! Большое спасибо за последний алгоритм. Это именно перестановка. smile.gif Буду пробовать это реализовать!


--------------------
Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.

Нима
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 17.07.2025 20:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"