Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прграммирование и основы алгоритмизации. Прграм...doc
Скачиваний:
1
Добавлен:
23.09.2019
Размер:
839.68 Кб
Скачать

П

program P7_1;

const x='Петров Саша';

Var n:integer;y:string;

begin;

n:=pos(' ',x); {n=7}

y:=copy(x,n+1,length(x))'; {y=Саша}

y:=y+’ ‘+copy(x,1,n-1);

writeln(y); {y=Саша Петров}

end.

ример 7-1.
В символьной строке Х=‘Петров Саша’ поменять местами имя и фамилию и поместить резуль­тат в Y. Решение потребует трех дей­ствий: 1). Нахождение позиции про­бела n=7, 2). Остаток фразы от пробела (т.е. ‘Саша’) поместить в Y. 3). Дополнить Y пробе­лом и началь­ным фрагментом фразы Х до пробела. Для наглядности процесс реализован в трех операторах. Но можно записать его и в один

y:=copy(x,pos(' ',x)+1,length(x))+' '+copy(x,1,pos(' ',x)-1);

Пример 7-2. В символьной строке Х подсчитать количество K слов. Счита­ем, что число слов равно числу пробелов +1. Первый вариант программы P7_2 имеет недостаток. Если перед первым словом предложения или после послед­него имеются пробелы, или внутри фразы встречается более одного пробела разом, число найденных слов окажется больше фактического. Испра­вим прог­рамму с учетом этих обстоятельств. Во втором варианте добавлен просмотр начала фразы до первого не пробела (j – номер первого значащего символа). Затем просматривается остаток фразы, где подсчитываются только одиночные пробелы (после пробела в i-ой позиции не должен стоять другой пробел). Дополните программу выдачей по отдельности всех слов предложения и их (справа) длин.

коды

символы

0..32

управляющие

65..90

A..Z

97..122

a..z

128..159

А..Я (кроме Ё)

160..175

а..п (кроме ё)

224..239

р..я

240,241

Ё,ё

Представление символьных данных. Каждому символу ПК сопоставлен код (целое число от 0 до 255) из ASCII-таблицы. Первые 128 символов вклю­чают цифры, знаки, латинские символы. Из них сим­волы с кодами 0..31 являются служебными (возврат каретки, перевод строки и т.д.). Латинские буквы A..Z имеют коды 65..90, a..z – 97..122. Следующие 128 позиций заняты символами псевдографики и буквами национального алфавита. В кириллице буквы A..Я имеют коды 128..159, a..п – 160..175, р..я – 224..239, буквы Ё – 240, ё – 241. Заметим, что коды заглавных и строчных букв a..п различаются на 32, а букв р..я – на 80. Очевидно, что на клавиатуре нет всех 256 знаков. Тем не менее, они могут быть отражены в программе с помощью своего кода в форме: #код. Так, оператор write(#65,#177,#201,#205,#187); выведет строку: “A▒╔═╗”. Символы, отсутствующие на клавиатуре, можно найти в справочнике, а можно и вывести вместе с их кодами на экран с помощью операторов: for i:=0 to 255 do write(chr(i),i:3,' ');. Отметим, что коды от 0 до 31 являются управляющими и, хотя многие из них имеют экранное отображение, использовать эти символы для непосредственного вывода нельзя. Символьные данные можно сравнивать между собой. При этом более короткая строка дополняется символами с кодом 0 до размеров более длинной строки. Далее последовательно слева направо коды символов сравниваются попарно из обеих строк (чей код больше – тот символ больше). Например: ‘а’<’б’; ‘а’=’а’; ’а’>’А’ (заглавные буквы имеют меньший код); ‘ВАЛЯ’<’ВАСЯ’ (расхождение в третьем символе, где ‘Л’<’C’); ‘ЯША’>’ПETP’ (буква Я больше П).

Пример 7-3. В строке S содержатся русские и латинские символы (заглав­ные и строчные), цифры и знаки препинания. Преобразовать все символы S в заглавные. Результат занести в D. В программе Х – строка размером в один символ, куда заносятся поочередно все символы из S для преобразования. В результате получим D='абвxyz123ABC'. Преобразование здесь осуществляет оператор вида X:=chr(ord(x[1])-32). Здесь сначала выясняется код ord(x[1]) текущего символа, из него вычитается 32 (т.е. вычисляется код соответст­вующей заглавной буквы), и, наконец, этот код снова преобразуется в символ.

program P7_3;