Показать сообщение отдельно
Старый 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 вне форума   Ответить с цитированием
Ads

Яндекс

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