Читайте также:
|
|
Это тоже полезное действие, которое часто применяется в системах хранения и поиска данных. Дело в том, что при сравнении строк обязательно учитывается регистр, поэтому такие способы записи одного слова, как компьютер, компьютер и компьютер будут восприняты как три разных слова, а в отсортированном списке они будут располагаться даже не рядом друг с другом. Учитывая данное обстоятельство, обычно при вводе информации выполняют преобразование слова к буквам какого-то одного регистра, чаще к заглавным буквам.
Начнем с простого примера. Преобразуем все строчные английские буквы введенной строки в заглавные. Для этого достаточно знания одной функции upcase, которая преобразует к верхнему регистру один символ (листинг 9.7).
I Листинг 9.7. Преобразование строчных латинских букв в заглавные
var s: string/procedure upstring(var s:string);) процедура преобразования строки } var i: integer; begin
for i:=l to length(s) do
s[i]:=upcase(s[i]); { преобразование одного символа } end; begin { начало основной программы }
write('Введите исходную строку:');readln{з);
upstring(s); writeln(s); readln; end.
Усложним задачу. Пусть требуется преобразовать в строке строчные буквы русского алфавита в заглавные. Функция upcase с символами русского алфавита не работает. Придется писать свою функцию, работающую с русскими буквами.
Будем использовать две вспомогательные строки: строку из всех заглавных букв русского алфавита и строку всех строчных букв. Заметим, что здесь обязательным является применение типизированных констант (или переменных), т. к. обычная строковая константа не может интерпретироваться как массив символов (листинг 9.8).
Г Листинг 9.8. Преобразование русских букв в заглавные
var s:string;
function upstringrus(s:string):string; const small:з^1пд='абвгдежзиклмнопрстуфхцчишгьыьэюя'; big:s tring='АБВГДЕЖЗИКЛ1даОПРСТУФХЦЧШЩЬЫЬЭЮЯ'; var i,n:integer; begin
for i:=l to lengthfs) do begin
n:=pos{s[i],small);{ находим номер символа в строке строчных букв) if n>0 then s[i]:=big[n];{ заглавная буква с таким же номером }
end;
upstringrus:=s; end; begin
write('Введите строку');readln(s);
writeln(upstringrus(s)); readln; end.
Чтобы окончательно закрыть эту тему, приведем заключительный пример. Процедура getupstr преобразует русские и английские буквы в заглавные непосредственно при вводе. Буква вводится в любом регистре, а на экране — всегда заглавная. Такой способ ввода используется в различных программах, теперь есть возможность узнать, как это делается (листинг 9.9).
^Листинг 9.9. Ввод строки с приведением всех букв к верхнему регистру
uses crt;
var s:string;
procedure getupstr(var st: string);
var с:char;
begin
st:='';{ сформировали пустую строй^ — это действие нельзя забывать } repeat
c:=readkey;{ слепой ввод без отображения на экране — модуль crt } case с of
{коды заглавных и прописных русских букв от А до П различаются на 32, } 'а1.. 'п1: c:=chr(ord(c)-32);
'рт.. 'я1: c:=chr(ord(c)-80); { а коды от Р до Я - на 80 } 'а1.. -z': c:=upcase(c);
end; |
if c<>#13 then { не клавиша <Enter> } begin
st:=st+c; write(с);{ добавляем символ к строке и выводим } end;
until c=#13;{ ввод завершен нажатием клавиши <Enter> } writeln; end; "begin
writeln('Введите строку текста и нажмите <Enter>'); getupstr(s); writeln('Значение s:1); writeln(s); readln
Множества
Множества имеют большое значение в математике, поэтому не удивительно, что в языке Turbo Pascal имеется такой тип данных.
Дата добавления: 2015-11-14; просмотров: 74 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
И замена фрагментов текста | | | Понятие множества |