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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.06.2011, 15:06   #1
aks
Пользователь
 
Аватар для aks
 
Регистрация: 03.02.2009
Сообщений: 44
По умолчанию Как проверить имеется ли заглавная буква в строке?

Как проверить имеется ли заглавная буква в строке?
aks вне форума
Старый 16.06.2011, 15:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а язык программирования какой?
и для какого языка надо найти заглавную (это имеется в виду Прописная, наверное) буква? Английский, финский, немецкий, испанский, китайский?...

p.s. я уже про название темы молчу...


а вообще алгоритм простой - перебрать все буквы в строке и каждую проверять на вхождение в заданный диапазон.
входит - значит, ПРОПИСНАЯ!

Последний раз редактировалось Serge_Bliznykov; 16.06.2011 в 15:49.
Serge_Bliznykov вне форума
Старый 16.06.2011, 15:45   #3
aks
Пользователь
 
Аватар для aks
 
Регистрация: 03.02.2009
Сообщений: 44
По умолчанию

Английский, Руский, Delphi
aks вне форума
Старый 16.06.2011, 15:52   #4
bumer7721
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 58
По умолчанию

нужно создать множество типа
Код:
const m=['A'..'Z'];//ето будет множество всех заглавних букв атглийського алфавита
потом нужно пробежатса по строке циклом
Код:
for i:=1 to length(s) do //s- строка
              if s[i] in m then
                begin
                  showmessage('Есть заглавная буква в строке'); 
                  break;
                end;
bumer7721 вне форума
Старый 16.06.2011, 16:32   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

bumer7721, угу, согласен.

Уточню, если нужно проверять наличие и английских и русских прописных букв,
тогда множество можно задать так:
Код:
const m=['A'..'Z','А'..'Я'];
Serge_Bliznykov вне форума
Старый 18.06.2011, 17:56   #6
Партизанин
Пользователь
 
Аватар для Партизанин
 
Регистрация: 13.06.2011
Сообщений: 16
Лампочка Поиск заглавной буквы в строке

Как вариант, чтобы не перебирать все множества символов в языке - можно сравнивать каждый символ строки с ASCII-кодом заглавных букв (точнее с пределами):

Код:
{...}
var s : string; {stroka}
     i : integer; {schetchik}
{...}
begin
 for i := 1 to length(s) do
  if ((ord(s[i]) > 64) and (ord(s[i] < 90))) {dlya angliyskih bukv}
   or ((ord(s[i]) > 127) and (ord(s[i] < 160))) {dlya russkih bukv}
   writeln('bukva zaglavnaya');
{...}
end.
Так результат должен получится быстрее.

P.S.:
Таблица ASCII-символов
Информация по ord() и chr()
Партизанин вне форума
Старый 18.06.2011, 18:31   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Партизанин, Вы абсолютно НЕПРАВЫ!

1) операции с множествами ОЧЕНЬ быстры!
2) приведённый Вами код чрезвычайно ненагляден.

и, главное,
3) у автора вопроса Delphi, следовательно Ваш код для русских букв ВООБЩЕ не будет работать.
(вы использовали таблицу кодов ASCII для OEM кодировки - это кодировка DOS 866) -
код для Turbo Pascal, но не для Delphi, где используется кодировка Windows 1251 (ANSI) )

p.s. это хороший пример, как не надо делать!
Когда в погоне за быстродействием (в данном случае мнимым, кстати) пишется непрозрачный, негибкий, да ещё и ошибочный код!
Serge_Bliznykov вне форума
Старый 18.06.2011, 20:28   #8
Партизанин
Пользователь
 
Аватар для Партизанин
 
Регистрация: 13.06.2011
Сообщений: 16
По умолчанию

Serge_Bliznykov, извиняюсь, таких подробностей я не знал... Абсолютно доверяю Вашему опыту!

Вопрос на счёт множеств: при проверки нахождения элемента в множестве не перебираются все элементы множества? (ну или до тех пор, пока не будет найдено совпадение)

Код ненагляден, скорей всего так и есть, но также приложил к нему литературу и указал, что конкретно надо в ней посмотреть.
Партизанин вне форума
Старый 18.06.2011, 21:27   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код ненагляден, скорей всего так и есть, но также приложил к нему литературу и указал, что конкретно надо в ней посмотреть.
Конкретно к Вашему посту никаких претензий! Вы не только привели свой вариант, но и объяснили как и на основании чего это написано.
Тут всё отлично!

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

p.s. Кстати, если человек понимает, что такое код символа, кодовая таблица, что делают функции ORD и CHR - то подобным кодом вполне можно (ну не нужно ) пользоваться! Делать надо понимая, что делаешь! И надо обязательно помнить про его особенности. А вот новичкам в программировании и изучающим язык я лично подобные трюки не рекомендовал бы!
Serge_Bliznykov вне форума
Старый 18.06.2011, 21:49   #10
Партизанин
Пользователь
 
Аватар для Партизанин
 
Регистрация: 13.06.2011
Сообщений: 16
Сообщение

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
А вот новичкам в программировании и изучающим язык я лично подобные трюки не рекомендовал бы!
Тут Вы, пожалуй, опять таки правы! Новичкам в такие дебри лезть и вправду рановато... Не подумал об этом, к тому же ожидал, что, предложенный мною вариант, будет побыстрее, но не зная всех тонкостей - ошибался.
Партизанин вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как проверить наличие определенного текста в строке jihot Общие вопросы Delphi 6 04.04.2010 18:40
Как проверить гласная или согласная буква? TwiX Общие вопросы Delphi 5 14.12.2009 04:25
Как проверить наличие частицы в каждой строке memo? zotox Помощь студентам 13 24.03.2009 12:56
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45
как проверить все ли поля заполнены в СТРОКЕ ? Максим-2 Компоненты Delphi 6 03.08.2007 22:31