Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена маленьких символов на большие, работа с текстом 
:(
    Опции темы
digitech
Дата 25.11.2007, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



Подскажите логику для программы, кторая все маленькие латинские символы будет заменять на большие. Сам принцип хочу понять
PM MAIL   Вверх
volvo877
Дата 25.11.2007, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Код

for i := 1 to length(s) do
  s[i] := UpCase(s[i]); { <--- Все давно придумано... }

PM MAIL   Вверх
digitech
Дата 25.11.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



а есть ещё какие-нибудь способы?
PM MAIL   Вверх
W4FhLF
Дата 25.11.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: нет
Всего: 121



Сбрось 5ый бит в байте. 

Код

for i := 1 to length(s) do
  s[i] := s[i] and $DF;



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
orthrus
Дата 25.11.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: нет
Всего: 16



тоже самое, но только записано по другому

Код

for i:=1 to length(s) do 
     s[i] := char(byte(s[i])-32);




--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
digitech
Дата 25.11.2007, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



а как можно определить, что символ маленький, или большой?
PM MAIL   Вверх
volvo877
Дата 25.11.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



W4FhLF, не будет компилироваться. Ибо нельзя смешивать Byte и Char - это разные вещи...

А вообще - я ОЧЕНЬ не рекомендую пользоваться вот такими трюками - это изначально завязано на кодировку. Сменится кодировка - будешь переписывать программу.
PM MAIL   Вверх
digitech
Дата 25.11.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 1.4.2007

Репутация: нет
Всего: 1



Цитата(orthrus @  25.11.2007,  15:01 Найти цитируемый пост)
for i:=1 to length(s) do      s[i] := char(byte(s[i])-32);

А этот код работает так:
в ASCSI таблице символы раположены (к примеру) так: ABCDEF.......а потом .....abcdef
принцип такой -> из индекса меленького элемента вычитается определённое число, которое потом будет соответствовать индексу большева элемента (такая же буква).
Вроде понятно выразился.?

Добавлено через 2 минуты и 56 секунд
Как определить, маленький это символ, или нет?
PM MAIL   Вверх
BSE
Дата 25.11.2007, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 25.11.2007

Репутация: нет
Всего: нет



if S[I] in ['a'.. 'z'] then
   {}
else
   {};
PM MAIL   Вверх
Ofer
Дата 25.11.2007, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.10.2006
Где: КривбаСС

Репутация: нет
Всего: 5



Цитата(digitech @ 25.11.2007,  15:26)
Как определить, маленький это символ, или нет?

Я не знаю на Паскале такой функции. Конечно, можно сравнивать с номерами в ASCII таблицы, но русские символы там разрываються. Елси не ошибаюсь, то 'а'..'п' это 160 - 175, а  'р'..'я' - 224 - 239. Поэтому так делать не всега удобно. Можно выйти из положения таким способом

Код

uses CRT;
var
  i : Integer;
  c : Char;
const
  Low : array [0..25] of Char = ('q','w','e','r','t','y','u','i','o','p',
  'a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m');  {Сюда можно вставить любые проверяемые символы}

function IsLow(cl : Char):Boolean;
begin
  IsLow := False;
  for i := 0 to 25 do
  if cl = Low[i] then
  IsLow := True
end;

begin
  ClrScr;
  Write('Введите букву: ');
  ReadLn(c);
  if IsLow(c) then
  WriteLn('Буква маленькая')
  else
  WriteLn(Буква большая'');
end.



В принципе, такой алгоритм можно применять и для других проверок.

Еще один способ. В модуле Strings есть функция StrLower, которая преобразует в строчные буквы. Преобразовуем букву и сравниваем с исходной. Если равны, то исходная буква маленькая. Но эта функция работает только с латиницей.
PM MAIL ICQ   Вверх
W4FhLF
Дата 29.11.2007, 08:35 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: нет
Всего: 121



Цитата(volvo877 @  25.11.2007,  15:14 Найти цитируемый пост)
W4FhLF, не будет компилироваться. Ибо нельзя смешивать Byte и Char - это разные вещи...


Дописать касты. 

Код

char(byte(s[i]) and $DF)


Цитата(volvo877 @  25.11.2007,  15:14 Найти цитируемый пост)
А вообще - я ОЧЕНЬ не рекомендую пользоваться вот такими трюками - это изначально завязано на кодировку. Сменится кодировка - будешь переписывать программу.


Ниразу пока не переписал, ибо:

Цитата(digitech @  25.11.2007,  13:17 Найти цитируемый пост)
кторая все маленькие латинские символы




--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
MetalFan
Дата 29.11.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: нет
Всего: 128



а с чего вдруг кодировка поменяется?
ANSI оно и в африке ANSI.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
vitalik07
Дата 29.11.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.11.2007
Где: Минск

Репутация: нет
Всего: нет



Можно еще по таблице ASCII смотреть!!

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.