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

      Комментарии к записи Обработка строковых величин отключены

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

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

Для обработки текстовой информации можно использовать те же методы, что применяют для одномерных массивов, так как структура строкового типа схожа с массивом. Однако для упрощения написания программ по работе с текстами были разработаны стандартные строковые процедуры и функции. Поэтому основной задачей этой лабораторной работы является освоение строковых операций, функций 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

begin

while (i

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

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.

Статьи к прочтению:

Процедуры и функции для строковых величин


Похожие статьи:

  • Распределенная обработка данных.

    Распределенная обработка данных — обработка данных, проводимая в распределенной системе, при которой каждый из технологических или функциональных узлов…

  • Обработка данных в потоке. конвейер

    Ввод и вывод. Перенаправление ввода и вывода Каждая программа работает с данными определенного типа: текстовыми, графическими, звуковыми и т. п. Основной…