русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Стандартные (встроенные) функции работы со строками


Дата добавления: 2014-11-28; просмотров: 643; Нарушение авторских прав


 

Функции, работающие со строками, в качестве аргумента используют строки, результатом могут быть либо новые строки, либо некоторые числовые характеристики строки - аргумента.

Concat(S1,S2,...Sn) - объединение нескольких строк в одну. Аргументы - имена строк (любое количество), результат - сцепленная строка (при превышении 255 символов, лишние последние символы отбрасываются без сообщения об ошибке). Пример:

Concat('Джентльмены',' у','дачи') вернет строку 'Джентльмены удачи'.

Copy(S,Num,Count) - вырезание подстроки из строки S начиная с символа с номером Num длиной Count символов. Если Num больше длины строки - результат

- строка нулевой длины, если заказанного количества символов в исходной строке не хватает, ошибки не возникает, а результирующая строка просто будет короче. Пример:

Copy('Гидромет',4,3) равно 'ром'.

Length(S) - нахождение текущей длины строки. Аргумент - имя строки, результат - целое число. Пример:

Length('ВТ и программирование') равно 16.

Pos(S,S0) - нахождение места, начиная с которого в строке S0 встречается строка S. Результатом будет целое число - номер позиции в строке S0. Если такого места не найдется, результат равен 0. Пример:

Pos('форма','Информатика') равняется 3.

 

Пример работы со строками.

Написать программу разбиения фразы на отдельные слова и распечатки массива выделенных слов с указанием, сколько раз каждое слово встречается. В качестве фразы использовать начало стихотворения «Не говорите мне – он умер – он живет. Пусть жертвенник разбит, огонь еще пылает, пусть роза сорвана, она еще цветет …».

Алгоритм программы должен учесть следующие моменты:

1) Нужно удалить все знаки препинаний (заменить их пробелами). Для этого, все символы, не попадающие в диапазоны букв, заменим пробелами.

2) Прописные буквы заменить на строчные. Для этого, все символы, попадающие в диапазон прописных букв, заменим соответствующими строчными.



3) Каждое вновь вырезанное слово сравнить с массивом ранее вырезанных слов на предмет совпадения.

В программе будем использовать следующие переменные:

S – исходная строка (150 символов)

Slovo – строка (е более 20 символов) в которую вырезается очередное слово.

Mas – массив строк длинной 20 символов каждая. Количество строк в массиве не более 30. (все выбираем с запасом!)

Kol – массив целых чисел, в котором будет хранится, сколько раз встречается соответствующее слово из массива Mas.

n – количество найденных различных слов.

i,j,m – номера символов в исходной строке (рабочие счетчики).

L – длина вырезаемого слова.

sdvig1,sdvig2 – сдвиги строчных букв от прописных для первой и второй частей алфавита (см. альтернативную кодировку ASCII в конце Практикума)

Pr – признак, что слово повторяется.

 

Program Dictionary;

{ VGI, MIT}

Type

Stroka = string[20];

Var

S:String[150];

Slovo : Stroka;

Mas : array[1..30] of Stroka;

Kol :array[1..30] of integer;

n,i,L,m,j,sdvig1,sdvig2: integer;

Fout:text;

Pr :boolean;

BEGIN

S:=Concat(' Не говорите мне - он умер - он живет.',

' Пусть жертвенник разбит, огонь еще пылает,',

' пусть роза сорвана, она еще цветет ...');

{ Вывод исходной строки в выводной файл }

Assign(Fout,'Diction.txt');

ReWrite(Fout);

WriteLn(Fout,'Исходная строка');

WriteLn(Fout,S);

WriteLn(Fout);

{ удаление знаков }

for i:=1 to Length(S) do

if not((S[i]>='А')and(S[i]<='п') or (S[i]>='р')and(S[i]<='я')) then

S[i]:=' '; { если не входит в диапазоны русских букв, заменяем на

пробел }

{ замена строчных на прописные}

sdvig1:= Ord('а') - Ord('А');

sdvig2:= Ord('р') - Ord('Р');

for i:=1 to Length(S) do

if (S[i]<='П') and (S[i]<>' ') then { если прописная от 'А' до 'П'}

S[i] := Chr(Ord(S[i])+sdvig1)

Else

if (S[i]<='Я') and (S[i]<>' ') then { если прописная от 'Р' до 'Я'}

S[i] := Chr(Ord(S[i])+sdvig2);

{ Контрольный вывод очищенной строки в выводной файл}

WriteLn(Fout,'Исправленная строка');

WriteLn(Fout,S);

WriteLn(Fout);

{ Основной цикл вырезания слов }

n:=0;

while Length(S)>0 do

Begin

{ поиск начала слова}

j:=1;

while S[j]=' ' do

j:=j+1;

{ поиск конца слова}

i:=j+1;

while S[i]<>' ' do

i:=i+1;

{ копирование слова из исходной строки}

Slovo:= Copy(S,j,i-j);

{ проверка, не встречалось ли слово раньше }

Pr:=FALSE;

for m:=1 to n do

if Slovo = Mas[m] then

Begin

Kol[m]:=Kol[m]+1;

Pr:=TRUE;

{ break;}

end;

if not Pr and (Slovo <> '') then { слово еще не встречалось }

Begin

n:=n+1;

Mas[n]:=Slovo; { записываем его в массив слов }

Kol[n]:=1;

end;

{ удаление символов до следующего слова или до конца строки }

while (i< Length(S)) and (S[i]=' ') do

i:=i+1;

Delete(S,1,i-1);

end; { конец основного цикла }

{ Вывод списка найденных слов }

WriteLn(Fout,'Слова':10,'количество':14);

for m:=1 to n do

WriteLn(Fout,Mas[m]:10, Kol[m]:6);

Close(Fout);

END.

 

Результат работы программы (файл Diction.txt)будет выглядеть так:

 



<== предыдущая лекция | следующая лекция ==>
Стандартные (встроенные) процедуры работы со строками | Исходная строка


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.493 сек.