Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Задача 6. Обработка строк с использованием операторов цикла.Стр 1 из 35Следующая ⇒
Лабораторная работа № 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. Стандартные строковые процедуры и функции.
Для того, чтобы обработать строку посимвольно от первого символа до последнего, можно применить цикл, например:
For i: =1 to Length(x) do { переменная i перебирает номера символов строки } If x[i]=’a’ then k: =k+1; { подсчитываем в цикле количество букв ‘а’ в строке }
Задача 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;
|