Студопедия

Главная страница Случайная страница

Разделы сайта

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






Задача 6. Обработка строк с использованием операторов цикла.






Лабораторная работа № 6.

Обработка строк с использованием операторов цикла.

 

При выполнении работы необходимо знать:

  • Особенности работы со строками.
  • Операторы цикла и уметь применять их при обработке строк.
  • Уметь составить схему программы (алгоритм) циклической структуры для задачи по обработке строк и записать программу по готовому алгоритму.

 

Теоретический минимум:

1. Строки.

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

Значение типа string представляет собой строку длиной от 0 (пустая строка) до 255 символов. При этом нулевой байт строки содержит сведения о текущей длине строки.

 

Примеры строковых значений:

‘12345’ ‘@#$%^’ ‘TRUE’ ‘АБВГДЕЖЗ’ ‘2007 год’

 

Следует помнить, что строка ‘12345’ не имеет ничего общего с числом и с ней нельзя производить арифметических действий. Строка ‘TRUE’ также вовсе не является значением типа Boolean.

 

Пример описания переменных строкового типа:

Var

A: string; {если длина строки не указана, то по умолчанию}

{она считается равной 255 символам}

B: string [80]; {максимальную длину строки можно указать явно}

 

Текущая длина строки – величина изменяющаяся, определяемая реальными данными.однако она не может превышать максимальную длину, указанную для данной строковой переменной.

Строки занимают промежуточное положение между простыми и структурированными типами данных. Строка – это структура, состоящая из элементов простого типа (Char). И в тоже время к строкам применимы некоторые действия, неприменимые к данным структурированного типа. Например, строку можно ввести с клавиатуры или вывести на экран, воспользовавшись операторами Read(A) и Write(A), где А-переменная строкового типа. Также допустимо сравнивать строки. Эти действия невозможны с другими данными структурированного типа – массивами и записями, обработка которых осуществляется только в цикле.

Обратиться к отдельному символу строки можно, указав имя строковой переменной и порядковый номер символа в строке, например:

 

A[5]: =’F’; {5-му символу в строке присваивается значение типа Char }

Write (A[33]); {значение 33-го символа строки выводится на экран}

 

Переменную типа string можно сравнить с другой переменной или константой типа string, используя знаки >, <, > =, < =, < >. Строки сравниваются посимвольно от первого символа. Если все символы строк одинаковы, то строки считаются равными. Если в одинаковых позициях строк находятся разные символы, то большей считается та строка, у которой в этой позиции находится символ с большим кодом.

К строкам применимы некоторые специальные процедуры и функции, приведенные в таблице.


Таблица 9.

Стандартные строковые процедуры и функции.

 

Процедура или функция Назначение Тип результата
Length(x)   Определяет текущую длину строки х.   Целое число – количество символов строки х.
Delete(x, p, n) Позволяет удалить часть строки х, начиная с позиции p, длиной n символов. Строка.
Pos(x1, x) Позволяет определить положение подстроки х1 в строке х. Целое число, номер позиции вхождения подстроки в строку. Если подстрока не найдена, возвращает ноль.
Copy(x, p, n) Позволяет скопировать фрагмент строки х, начиная с позиции p, длиной n символов. Строка.
Insert (x1, x, n) Вставка подстроки х1 в строку х начиная с позиции n Строка.
Val(x, p, n) Позволяет преобразовать изображение числа х в число, р - переменная, которой присваивается полученное число, n - код ошибки. Если строка успешно преобразована в число, то код ошибки ноль, если преобразование невозможно, то код ошибки равен номеру позиции в строке, содержащей недопустимый символ.

 


Для того, чтобы обработать строку посимвольно от первого символа до последнего, можно применить цикл, например:

 

For i: =1 to Length(x) do { переменная i перебирает номера символов строки }

If x[i]=’a’ then k: =k+1; { подсчитываем в цикле количество букв ‘а’ в строке }

 

Задача 6.

Если в строке количество пробелов больше, чем количество запятых, заменить пробелы звездочками, иначе заменить запятые звездочками. Вывести измененную строку на экран.

Математическая формулировка задачи:

Необходимо задать исходную строку с клавиатуры и затем посимвольно обработать ее при помощи цикла. В цикле осуществим подсчет количества пробелов и запятых в строке. После окончания просмотра всей строки можно сравнить полученное количество пробелов и количество запятых.

Как заменить пробелы или запятые символом звездочка? Очевидно, нужно заново просмотреть строку посимвольно в цикле, и как только встретится интересующий нас символ (пробел или запятая), присвоить этому символу новое значение, то есть заменить его символом звездочка.

 


Алгоритм решения задачи 6:
Текст программы к задаче 6:

 

Program Ex_6;

Uses Crt;

Label 1;

Var

S: string; { строка }

kl, k2: integer; { количество пробелов и запятых }

i: integer; { текущий номер символа строки}

Begin

ClrScr;

Write(‘Введите строку ’);

Readln(S);

k1: =0; k2: =0;

For i: =1 to Length(S) do

{ переменная i перебирает номера символов строки }

Begin

If S[i]=’ ’ then k1: =k1+1;

{ подсчитываем в цикле количество пробелов в строке }

If S[i]=’, ’ then k2: =k2+1;

{ подсчитываем в цикле количество запятых в строке }

End;






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.