Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2011, 15:55   #1
TI_ProJecT
Пользователь
 
Регистрация: 06.11.2011
Сообщений: 25
По умолчанию Работа со строкой

1) Составить процедуру, которая позволяет зашифровать слово из клетки А11. Зашифрованное слово помещается в клетку В11. Принцип шифрования следующий: имеется "новый" алфавит, представляющий собой некоторую строку - перестановку букв алфавита. Если некоторая буква является k-той буквой в обычном алфавите, то вместо нее должна быть взята буква из k-той позиции "нового" алфавита.

2) Составить процедуру, которая первую букву фамилии, имени и отчества принудительно делает прописной.

3) Создать процедуру, которая в текстовой строке, введенной в ячейку А13, выдаст сообщение при обнаружении русской буквы.

С вашей помощью я смог сделать около 25 заданий. Эти просто физически не успеваю. Если задание 3) я примерно понимаю ( проверить ячейки на совпадение с русским алфавитом), то о чем идет речь в 1) вообще не понимаю. Во втором задании как понимаю, 1 букву, после первого и второго пробела делать большими.
Заранее большое спасибо.
TI_ProJecT вне форума Ответить с цитированием
Старый 08.11.2011, 16:56   #2
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

в первом просто задать как-нибудь соответствия
во втором есть функция UCase или Format возможно тоже подойдёт
обнаружить русскую букву надо при помощи asc т. е. пройтись по всем буквам, или даже не по всем а пока не закончатся или пока не обнаружится русская и проверить принадлежность asc("текущая_буква") промежутку от asc("a") до asc("я") и с заглавными ещё, либо всю строку сперва перевести в один регистр например нижний (LCase)
Camaro Chevelle вне форума Ответить с цитированием
Старый 08.11.2011, 17:34   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

1. Процедура должна иметь доступ к паре строк. Первая - алфавит ("абвгдеёжзийк...эюя"); вторая - переставленный алфавит, тоже все 33 буквы по разу каждая, но в другом порядке. Например, т.н. атбаш ("яюэ...дгвба") или шифр Цезаря ("гдеёжзи...эюяабв").
Процедура поштучно перебирает символы слова. Для каждого символа, она ищет его в первой строке, найдя, запоминает номер k. Затем в выходное слово дописывается символ, взятый из второго алфавита по найденному индексу, и так пока не кончится слово.
К примеру, если взять атбаш, слово "забег" превратится в "чяюъь".
Abstraction вне форума Ответить с цитированием
Старый 08.11.2011, 18:38   #4
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

есть ещё функция replace$, ищет и заменяет найденное
Camaro Chevelle вне форума Ответить с цитированием
Старый 08.11.2011, 18:55   #5
TI_ProJecT
Пользователь
 
Регистрация: 06.11.2011
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Camaro Chevelle Посмотреть сообщение
есть ещё функция replace$, ищет и заменяет найденное
Я попробую сейчас. Просто не успеваю сделать.
TI_ProJecT вне форума Ответить с цитированием
Старый 08.11.2011, 19:28   #6
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

вот тут сделал что-то на скорую руку, там только латинские буквы и алфавит надо задавать заглавными
Код:
Option Explicit
Sub Coder()
  Const alph = "QWERTYUIOPASDFGHJKLZXCVBNM"
  Dim s As String, i As Integer
  s = Cells(1, 5)
  For i = Asc("a") To Asc("z")
    s = Replace$(s, Chr$(i), Mid$(alph, i - Asc("a") + 1, 1))
  Next
  Cells(2, 5) = LCase(s)
End Sub

Последний раз редактировалось Camaro Chevelle; 08.11.2011 в 19:30.
Camaro Chevelle вне форума Ответить с цитированием
Старый 08.11.2011, 19:41   #7
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

по поводу русских букв если я правильно понял можно сделать так
Код:
Option Explicit
Sub Check()
  Dim c As Integer, i As Integer, s As String
  s = LCase(Cells(1, 1))
  For i = 1 To Len(s)
    c = Asc(Mid$(s, i, 1))
    If c >= Asc("а") And c <= Asc("я") Then
      MsgBox "Есть русские буквы!"
      Exit For
    End If
  Next
End Sub
Camaro Chevelle вне форума Ответить с цитированием
Старый 08.11.2011, 20:41   #8
TI_ProJecT
Пользователь
 
Регистрация: 06.11.2011
Сообщений: 25
По умолчанию

Спасибо большое, исправил под свои нужды вроде работает.
Осталась вторая задача. Получается нужно сделать поиск первой буквы, первой буквы после пробела и заменить на большие?

Последний раз редактировалось TI_ProJecT; 08.11.2011 в 20:43.
TI_ProJecT вне форума Ответить с цитированием
Старый 08.11.2011, 21:10   #9
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

юзай функцию format$ думаю ей можно воспользоваться. сам в ней не очень секу. если не выйдет то с ucase и mid поэкспериментируй.

Кстати, mid позволяет ведь не только возвращать подстроку, с её помощью можно заменять подстроку строки другой подстрокой. Допустим есть исходная строка s="abcdefgh" нужно получить "abcxxfgh", для этого пишут такое:

Код:
mid$(s, 4, 2)="xx"
В твоей проге надо сделать такое

Код:
dim i as integer
mid$(s, 1, 1)=ucase(mid$(s, 1, 1)) 'эта штука делает 1-ю букву большой
i=instr(1, s, " ")+1               'находим позицию первой буквы имени
mid$(s, i, 1)=ucase(mid$(s, i, 1)) 'делаем имя с большой буквы
i=instrrev(s, " ")+1
mid$(s, i, 1)=ucase(mid$(s, i, 1)) 'угадай что делает эта команда
вот как-то так может

Последний раз редактировалось Camaro Chevelle; 09.11.2011 в 00:54.
Camaro Chevelle вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строкой FrostoS Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 04.01.2011 17:20
Работа со строкой. anamnesis Помощь студентам 5 19.12.2010 18:16
работа со строкой mansp Общие вопросы C/C++ 1 15.11.2010 23:19
работа со строкой Андрей.12 Помощь студентам 1 15.02.2010 09:14
Работа со строкой s2dentishe Общие вопросы Delphi 6 05.12.2009 15:09