Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 09.01.2016, 01:21   #1 (permalink)
hedgehod
Member
 
Регистрация: 05.01.2016
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
По умолчанию Паскаль. Задание подразумевается для школьников

Ребят, пожалуйста , подскажите идею, как это решить . Не пишите сразу код, пожалуйста.
Задача: Строки (цепочки символов латинских букв) создаются по следующему правилу: Первая строка состоит из одного символа — латинской буквы «А». Каждая из последующих цепочек создаётся такими действиями: в очередную цепочку сначала записывается буква, чей порядковый номер в алфавите соответствует номеру строки (на i-м шаге пишется i-я буква алфавита), к ней слева дважды приписывается следующая строка.
Вот первые 4 строки, созданные по этому правилу:
(1)А
(2) ААВ
(3) ААВААВС
(4) AABAABCAABAABCD
Запишите шесть символов подряд, стоящие в восьмой строке с 72-го по 77-е место (считая слова направо).
hedgehod вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
DiM (09.01.2016)

Старый 09.01.2016, 01:21
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Рекомендую вам внимательно прочитать содержимое данных тем

Турбо Паскаль. Задание на анимацию
Задание контрольной

Старый 09.01.2016, 10:49   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от hedgehod Посмотреть сообщение
Ребят, пожалуйста , подскажите идею, как это решить . Не пишите сразу код, пожалуйста.
Ох, прям маслом по сердцу - вот все бы так! Вместо обычного "помогите", подразумевающего "вы напишите программу, я тупо скатаю и сдам".
Хотя, должен заметить, написать код гораздо проще и быстрее, чем объяснять. Но - просьба есть просьба. Ладно.

Для начала нам понадобится нечто, во что, если закинуть номер, то на выходе оно бы выдало заглавную букву английского алфавита, соответствующую этому номеру, т.е. 1-A, 2-B, 3-C и т.д. Можно, конечно, организовать массив из 26 элементов типа CHAR, заполнить его нужными буквами и к нему обращаться, но это некультурно. Лучше воспользоваться стандартной функцией CHR(n:byte):Char. В данном случае следует использовать функцию CHR(i+64) - она решает задачу.

Идём дальше. Вводим номер интересующей нас строки, обозначенный, например, М (в задаче М=8), и далее начинаем формировать нужную строку. Для этого нам понадобятся две строковые переменные (S1 и S2) и рекуррентный цикл. Задаем исходное значение S1:='A' и запускаем цикл по i (обычный, for..to) от 2 до М с телом
S2:=S1+S1+CHR(i+64);
S1:=S2;

Ура, нужная (в данном случае восьмая) строка получена! Это S1 или S2 - без разницы, при выходе из цикла они одинаковые. Остается вычленить из нее требуемые 6 символов. Проще всего решить эту проблему с помощью стандартной функции Copy(S:String; Index:Integer; Count:Byte):String. Вводим строковую переменную S3 и пишем:
S3:=Copy(S1,72,6);
Выводим S3 на экран. Пляшем качучу.

Удачи!
Vladimir_S вне форума   Ответить с цитированием
Старый 09.01.2016, 14:28   #3 (permalink)
hedgehod
Member
 
Регистрация: 05.01.2016
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
По умолчанию

Огромное спасибо. Все работает, спасибо. Вы все так подробно описали мне и делать нечего было. )))
hedgehod вне форума   Ответить с цитированием
Старый 09.01.2016, 14:29   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от hedgehod Посмотреть сообщение
Огромное спасибо. Все работает, спасибо. Вы все так подробно описали мне и делать нечего было. )))
Всегда пожалуйста - обращайтесь, если что.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.01.2016, 15:06   #5 (permalink)
mike_
VIP user
 
Аватар для mike_
 
Регистрация: 15.01.2014
Сообщений: 1,828
Сказал(а) спасибо: 242
Поблагодарили 15 раз(а) в 11 сообщениях
Репутация: 26010
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Ох, прям маслом по сердцу - вот все бы так! Вместо обычного "помогите", подразумевающего "вы напишите программу, я тупо скатаю и сдам".
Хотя, должен заметить, написать код гораздо проще и быстрее, чем объяснять. Но - просьба есть просьба. Ладно.
А я уже думал просто задание было,- написать объяснение, и код. И третьим постом потом будет:
-не могу разобраться, напишите код.
mike_ вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 09.01.2016, 22:33   #6 (permalink)
hedgehod
Member
 
Регистрация: 05.01.2016
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
По умолчанию

Просто, я сделала вариант с массивом из символов, но не смогла чередовать строки. Вот и хотела просто идею, чтоб догадаться как дальше.
hedgehod вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

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

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




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.