09.01.2016, 01:21 | #1 (permalink) |
Member
Регистрация: 05.01.2016
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
|
Паскаль. Задание подразумевается для школьников
Задача: Строки (цепочки символов латинских букв) создаются по следующему правилу: Первая строка состоит из одного символа — латинской буквы «А». Каждая из последующих цепочек создаётся такими действиями: в очередную цепочку сначала записывается буква, чей порядковый номер в алфавите соответствует номеру строки (на i-м шаге пишется i-я буква алфавита), к ней слева дважды приписывается следующая строка. Вот первые 4 строки, созданные по этому правилу: (1)А (2) ААВ (3) ААВААВС (4) AABAABCAABAABCD Запишите шесть символов подряд, стоящие в восьмой строке с 72-го по 77-е место (считая слова направо). |
Пользователь сказал cпасибо: | DiM (09.01.2016) |
09.01.2016, 01:21 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Рекомендую вам внимательно прочитать содержимое данных тем Турбо Паскаль. Задание на анимацию Задание контрольной |
09.01.2016, 10:49 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Хотя, должен заметить, написать код гораздо проще и быстрее, чем объяснять. Но - просьба есть просьба. Ладно. Для начала нам понадобится нечто, во что, если закинуть номер, то на выходе оно бы выдало заглавную букву английского алфавита, соответствующую этому номеру, т.е. 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 на экран. Пляшем качучу. Удачи! |
|
09.01.2016, 15:06 | #5 (permalink) | |
VIP user
Регистрация: 15.01.2014
Сообщений: 1,828
Сказал(а) спасибо: 242
Поблагодарили 15 раз(а) в 11 сообщениях
Репутация: 26010
|
Цитата:
-не могу разобраться, напишите код. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
09.01.2016, 22:33 | #6 (permalink) |
Member
Регистрация: 05.01.2016
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
|
Просто, я сделала вариант с массивом из символов, но не смогла чередовать строки. Вот и хотела просто идею, чтоб догадаться как дальше.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|