Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Обработка строковых величин




Цель работы: освоить строковые операции, процедуры и функции; научиться создавать программы обработки текстовых данных.

Общие сведения

Для обработки текстовой информации можно использовать те же методы, что применяют для одномерных массивов, так как структура строкового типа схожа с массивом. Однако для упрощения написания программ по работе с текстами были разработаны стандартные строковые процедуры и функции. Поэтому основной задачей этой лабораторной работы является освоение строковых операций, функций Length, Pos, Copy и процедур Delete, Insert.

Перед выполнением работы необходимо ознакомиться с теоретическим материалом по теме «Обработка литерных величин. Данные типа Char и String» ([1], с. 73-82).

 

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

Решение. Все знаки сравнения и скобки перечислим в строковой константе srav_sk. В теле программы последовательно рассмотрим все символы введенной строки s, проверяя каждый на вхождение в строку srav_sk, выводя на экран содержащиеся в строковой константе символы строки s.

program string_1;

const srav_sk='<>=(){}[]';

var s:String; i:Integer;

begin

Writeln('Введите строку:'); Readln(s);

for i:=1 to Length(s) do

if Pos(s[i],srav_sk)<>0 then write(s[i]);

Readln

end.

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

Решение. В строке, последовательно перебирая элементы, будем выделять начало ns и конец ks каждого слова, копировать слово в другую строковую переменную, а затем проверять четность длины и равенство частей строки slovo. Слова, для которых выполнено условие задания будем склеивать в переменной otv. После добавления к ответу последнего слова в конце otv будет лишняя запятая, которую перед выводом на экран необходимо удалить.

program string_2;

var s,slovo,otv:String; ns,ks,i,m:Integer;

begin

Writeln('Введите строку:'); Readln(s);

i:=1; ns:=1; otv:=''; s:=s+' ';

while i<=Length(s) do

begin

while (i<=Length(s))and(s[i]<>' ') do i:=i+1; {ищем очередной пробел}

ks:=i; slovo:=Copy(s,ns,ks-ns); {выделяем слово}

m:=Length(slovo) div 2; {половина длины слова}

if (Length(slovo) mod 2=0) and (Copy(slovo,1,m)=Copy(slovo,m+1,m))

{если слово имеет четную длину}

then otv:=otv+slovo+','; {добавляем слово к ответу}

while (i<=Length(s))and(s[i]=' ') do i:=i+1; {пропускаем пробелы}

ns:=i; {начало следующего слова}

end;

Delete(otv,Length(otv),1); {удаляем лишнюю запятую в конце}

Writeln(otv);

Readln

end.

Варианты заданий

Задание 1. Составить программу обработки данной строки, позволяющую:

1) найти количество гласных букв в тексте (учитывать и прописные, и строчные буквы);

2) выписать все гласные буквы из данной строки, сохранив их последовательность (учитывать и прописные, и строчные буквы);

3) выписать все прописные буквы из данной строки в порядке их следования;

4) определить, каких строчных согласных в тексте больше – глухих или звонких;

5) найти количество прописных букв в тексте;

6) определить, содержатся ли в тексте цифры;

7) выписать все цифры, встречающиеся в тексте, сохранив их последовательность;

8) найти количество строчных согласных букв в тексте;

9) найти общее количество круглых, квадратных и фигурных скобок в тексте;

10) выписать из данной строки все символы, отличные от пробелов и букв латинского алфавита, сохранив их последовательность;

11) выписать все знаки препинания из данной строки, сохранив их последовательность;

12) выписать из данной строки все символы, отличные от круглых, квадратных и фигурных скобок, сохранив их последовательность.

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

1) слова, одинаково читающиеся справа налево и слева направо;

2) слова текста с удвоенными буквами, например: класс, сумма, ссылка;

3) слова, содержащие одинаковое количество гласных и согласных букв;

4) слова заданной длины, в которые входит данная буква;

5) слова, состоящие из одинаковых символов (например, ааа, ееее и т.п.);

6) слова-аббревиатуры, состоящие только из прописных букв;

7) слова, в которых нет глухих согласных;

8) слова, содержащие хотя бы одну гласную;

9) слова, начинающиеся с прописной буквы, в которых все остальные буквы строчные;

10) слова, которые начинаются и заканчиваются одной и той же буквой и содержат хотя бы одну букву "а";

11) слова, которые содержат ровно три буквы "а";

12) слова, состоящие из букв латинского алфавита.

ПРИЛОЖЕНИЕ

Гласные строчные буквы: a, e, o, u, i, y

Гласные прописные буквы: A, E, O, U, I, Y

Звонкие согласные (указаны только строчные): b, d, g, j, n, m, r, v, z, w

Глухие согласные (указаны только строчные): c, f, h, k, l, q, p, s, t, x

Десятичные цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

 

Дополнительные задания

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

a) определить количество слов в строке;

b) удалить из строки избыточные пробелы, чтобы между словами осталось только по одному пробелу;

c) найти самое короткое слово и его длину;

2. Инициалы. В строке через пробел указаны имя, отчество и фамилия. Записать строку в следующей форме: фамилия, пробел, инициалы. Например, строка «Александр Иванович Смирнов» должна превратиться в текст «Смирнов А.И.».

3. Дата. Проверить, является ли данная строка верной записью даты в форме ДД.ММ.ГГ. Считать, что в каждом месяце года 30 дней.

 

Контрольные вопросы

1. Как описываются в языке Паскаль строковые величины?

2. В чем сходство и в чем различие между массивами и строками?

3. Существуют ли ограничения, накладываемые на длину строки?

4. Какие строковые процедуры существуют в языке Паскаль?

5. Перечислите строковые функции.


ЛИТЕРАТУРА

1. Касторнов А.Ф. Евстратова Г.А. Язык программирования Паскаль: Учеб. пособие. – Череповец, 2010.

2. Немнюгин С.А. Turbo Pascal: Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2007.

3. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2004.

4. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Практикум. – СПб.: Питер, 2006.

5. Ставровский А.Б. Турбо Паскаль 7.0: Учебник для вузов. – Киев, 2001.

6. ФароновВ.В. Система программирования Delphi. – СПб., 2006.

7. ФароновВ.В. Турбо Паскаль 7.0: Практика программирования: учебное пособие.-М.: ОМД Групп, 2003.

8. Программирование на языке Паскаль: задачник / под ред. Усковой О.Ф. – СПб.: Питер, 2002.

9. Юркин А.Г. Задачник по программированию. – СПб.: Питер, 2002.

 





Поделиться с друзьями:


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 955 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студент может не знать в двух случаях: не знал, или забыл. © Неизвестно
==> читать все изречения...

2806 - | 2369 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.