русс | укр

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

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

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

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


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

Лаб. 11. Задачи со строками


Дата добавления: 2013-12-23; просмотров: 4041; Нарушение авторских прав


Искать одну строку внутри другой (позицию, начиная с которой подстрока входит в строку): b:=’Я шёл рядом с папой по пути домой’; a:=’дом’; m:=pos(a,b); Хотя слово «дом» есть и в слове «рядом», и в слове «домой», найдено будет только первое вхождение. В переменную m будет занесено число 9. Если функция POS не обнаружила одну строку внутри другой, будет выдан 0. Поэтому в задачах, если нас не интересует, с какой позиции найдена подстрока, а только факт её вхождения, можно проверять так: if pos(a,b)>0 then ...

Var

Строки

Ограниченный (интервальный) тип данных

 

В некоторых задачах использование порядковых типов данных требуется ограничить. Например, для возраста ученика из типа Integer или Byte используется только промежуток от 3 лет (для вундеркинда) до 20 лет (для второгодника). Если мы вместо стандартного типа введём интервал, то Паскаль будет помогать нам следить за его нарушением (выходом за границы интервала).

       
   
 
 

 


или

 

 

Интервальный тип можно задать не только на базе числового типа, но и на базе других порядковых типов данных. Например:

 


Над данными интервального типа можно делать все те же операции, что и над базовым типом, из которого он был создан.

 

 

Кроме отдельных символов в программах используют символьные строки. Символьная строка, находящаяся непосредственно в программе, называется строковой константой и заключается в одинарные кавычки (апострофы). Например: ’Жили у бабуси два весёлых гуся’. Длина строки – не более 255 символов. Строковые переменные для хранения символьных строк описываются так:

s:string;

b:string[30];

При первом способе переменной s отводится место для 255 символов. Даже если в переменную s поместили коротенькую строку, всё равно зарезервировано место для 255 символов, из которых бόльшая часть не используется. Второй способ более экономный. Переменной b отводится место для 30 символов. Если попытаемся в b занести более длинную строку, из неё запишутся первые 30 символов, остальные будут потеряны. Попытка использовать строку длиннее, чем 255 символов приводит к сообщению об ошибке «Переполнение строки».



Строки можно присваивать, вводить с клавиатуры. Например:

fam:=’Петров’;

write(’Введите Ваше имя ’); readln(nam);

Над строковыми переменными и константами можно выполнять такие действия:

1. Определять длину строки: dl:=length(a);. Имеется в виду не место, отведённое для строки при объявлении, а сколько в ней на самом деле содержится символов.

2. Склеивать две строки (с помощью знака «+» ). Например, склеив строки a:=’за’; и b:=’мок’;, мы получим c:=a+b; - слово «замок».

3. Выделять из строки один символ (с помощью квадратных скобок). Например, a:=’Семафор’; c:=a[5]; - получим символ ‘ф’.

4. Выделять часть строки (копировать подстроку). Например, s:=’Информатика’; s1:=copy(s,3,5); . В переменную s1 из строки s скопируется 5 символов, начиная с 3-го, то есть, слово «форма».

5. Удалять часть строки: a:=’королева’; delete(a,5,2); . Удалятся 2 символа, начиная с 5-го. Получим в переменной a слово «корова».

6. Вставлять одну строку внутрь другой: a:=’кус’; b:=’акт’; insert(b,a,2);. Получим в переменной a слово «кактус».

8. Если число записано в кавычках, то это не число, а строка, состоящая из символов-цифр. Например, из строки ’Длина удава – 38 попугаев’ можно выделить подстроку ‘38’, но с ней нельзя будет производить вычислений, пока не превратим её в настоящее число. Сделать это можно так: a:=’38’; val(a,x,k);, где x – числовая переменная для результата, а
k – переменная для кода ошибки. Если в текстовой строке число записано правильно, то код ошибки будет равен 0. Если неправильно (например, содержит буквы или другие символы, не используемые в числах, или, к примеру, тип этого числа не совпадает с типом переменной x), то k будет содержать число – код ошибки. Для нас важно, что k>0, что легко проверить. Аналогично работают функции x:=strtoint(a); (строку – в целое число) и x:=strtofloat(a); (строку – в дробное число). Они более просты в использовании, но при ошибке, в отличие от val, программа прерывается.

9. Наоборот, если мы вычислили какое-либо число, то его можно преобразовать в строку, чтобы выполнять с ним строковые операции (например, склейку…). Сделать это можно так: x:=3*d+15; str(x,a); s:=’Длина удава ’+a+’ см.’;. Здесь a – строка, полученная из числа x. Некоторое неудобство доставляют дробные (вещественные) числа. Как и при печати эти числа записываются в строку в формате с фиксированной точкой. Чтобы указать другой формат, можно написать так: str(x:5:2,a); . Здесь 5 – точность числа (количество оставляемых значащих цифр. Остальные округляются), а 2 – количество десятичных знаков (после точки). Для этих же целей можно воспользоваться функциями a:=inttostr(x); (целое число – в строку) и a:=floattostr(x); (дробное число – в строку).

10. С помощью функции uppercase(s); можно преобразовать все строчные буквы в строке s в заглавные (на остальные символы эта функция не действует), а с помощью lowercase(s);- заглавные в строчные.

Строки можно сравнивать с помощью знаков ’>’,’>=’,’<’,’<=’,’=’,’<>’. При этом строки сравниваются посимвольно до первого же несовпадающего символа. Бóльшей считается строка, у которой этот несовпадающий символ имеет бóльший код (вне зависимости от того, какие символы в этих строках находятся дальше и сколько их).

 

В качестве примера использования символов и строк рассмотрим такие задачи:

Определить, сколько раз во введённой строке a содержится введённое слово b.

 

 

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

 


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

1. Во введённой строке удалить в каждом предложении первое слово, а у второго сделать первую букву заглавной.

2. Вводится текст. Программа должна определить, используется ли в тексте только русский шрифт, только латинский или смешанный. Небуквенные символы при проверке игнорировать.

3. «Перекодировать» клавиатуру, т.е., сделать так, чтобы при вводе русского текста показывались не те буквы, которые нажимаются. Ввод заканчивается по «enter». После этого печатается неперекодированная строка.

4. Зашифровать введенную с клавиатуры строку, поменяв местами первый символ с третьим, второй с четвертым и т. д. Провести дешифровку.

5. Перевернуть введённое предложение, поменяв слова местами. Например, было «мама мыла раму», стало «раму мыла мама».

6. Некий человек ввёл текст со старой клавиатуры, на которой некоторые клавиши западают и печатают несколько одинаковых букв подряд. Известно, что в исходном тексте встречались слова, содержащие двойные буквы «с», «н» и «м», как раз те, которые на клавиатуре не западают. Восстановить правильный текст, устранив последствия западания клавиш.

7. Ввести текст и напечатать его, выделив цветом буквосочетания «жи», «ши», «ча», «ща», в которых допущены «ошыбки».

8. Вводится текст, содержащий форматные символы: @ - с красной строки; # - выделить жирным; $ - отменить жирный; & - печатать с разрядкой (после каждого символа вставлять пробел); ^ - отменить разрядку. Напечатать текст в соответствии с форматом.

9. Дан текст и дано слово. Нужно проверить, можно ли из букв текста составить это слово. Буквы из текста запрещается использовать дважды.

10. Найти самое длинное слово во введённом тексте.

11. Найти во введённом тексте слова-палиндромы (симметричные слова, вроде «шалаш»).

12. Найти во введённом тексте слова, встречающиеся 2 и более раза. Указать, сколько раз они встречаются.

13. Ввести два предложения и проверить, все ли слова первого встречаются во втором.

14. Вводится текст и два слова. Программа находит в тексте первое слово (сколько бы раз оно не встретилось) и заменяет его вторым.

15. Ввести два предложения и найти такую (максимально большую) часть первого предложения, которая входит во второе предложение.

16. Введённый текст распечатать столбиком шириной 20 символов. Если в конце строки слово оказывается разорванным, поставить знак переноса «-» (не обращая внимания на правила переноса). Если же с концом строки заканчивается и очередное слово (в том числе и на 1-3 символа раньше конца строки), то новое слово начать печатать с новой строки, пропустив пробел.

17. Во введённом тексте найти все слова, начинающиеся с заглавной буквы и содержащие не менее 2-х гласных букв.

18. Ввести текст и длину строки. За счёт добавления пробелов между словами довести длину текста до заданной. Если длина текста больше, разделить текст на строки нужной длины, чтобы в каждой строке были только целые слова, а затем каждую такую строку подровнять с помощью пробелов до заданной длины.

19. Программа вводит текст и номер слова, а затем удаляет в тексте слово с таким номером, либо сообщает, что слова с таким номером нет в тексте.

20. Во введённом тексте обменять местами первое и последнее предложения.


 



<== предыдущая лекция | следующая лекция ==>
Символьный тип данных | Массивы


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


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

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

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


 


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

 
 

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

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