Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Типы данных для работы со строкамиСодержание книги
Поиск на нашем сайте
Короткие строки типа ShortString и String[N] Короткие строки имеют фиксированное количество символов. Строка ShortString может содержать 255 символов. Строка String[N] может содержать N символов, но не более 255. Первый байт этих переменных содержит длину строки. Длинная строка типа String При работе с этим типом данных память выделяется по мере необходимости (динамически) и может занимать всю доступную программе память. Вначале компилятор выделяет для переменной 4 байта, в которых размещается номер ячейки памяти, начиная с которой будет располагаться символьная строка. На этапе выполнения программа определяет необходимую длину цепочки символов и обращается к ядру операционной системы с требованием выделить необходимую память. Существует ряд стандартных процедур и функций для работы со строками Функция Length(s) выдает длину строки s Функция Concat(s1, S2, …,sn) возвращает строку s1+s2+…sn. Функция Copy(s, p, k) возвращает фрагмент строки s, который начинается в позиции p и имеет длину k. Функция Pos(s1, s) ищет первое вхождение подстроки s1 в строку s и возвращает номер первого символа s1 в строке s или 0 если не нашли. Процедура Delete(s, p, k) удаляет из строки s фрагмент, который начинается в позиции p и имеет длину k. Процедура Insert(s, s1, p) вставляет в строку s подстроку s1,начиная с заданной позиции p. В Delphi можно производить преобразования числовых значений в строковые и наоборот. Для этого используются процедуры Str(X:n:d, S) и Val(S, X, e).
Пример: Задание: написать программу подсчета числа слов в произвольной строке. В качестве разделителя может быть любое число пробелов. Для ввода строк и работы с ними использовать TComboBox. Ввод строки заканчивать нажатием клавиши Enter. Для выхода из программы использовать кнопку Close. Панель диалога будет иметь вид (рис. 5.1). Текст программы приведен ниже.
// Обработка события активизации формы procedure TForm1.FormActivate(Sender: TObject); begin ComboBox1.SetFocus; // Передача фокуса ComboBox1 end;
// Обработка события нажатия левой клавиши мыши procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin // Если нажата клавиша Enter, то... ComboBox1.Items.Add(ComboBox1.Text); // Строка из окна редактирования // заносится в список выбора ComboBox1.Text:=''; // Очистка окна редактирования end; end;
procedure TForm1.ComboBox1Click(Sender: TObject); var st: string; n,i,nst,ind: integer; begin n:=0; // Содержит число слов ind:=0; nst:=ComboBox1.ItemIndex; // Определение номера выбранной строки st:=ComboBox1.Items[nst]; // Занесение выбранной строки в переменную st for i:=1 to Length(st) do begin // Просмотр всех символов строки st case ind of 0: if st[i]<>' ' then begin // Если встретился символ после пробела ind:=1; n:=n+1; // Число слов увеличивается на единицу end; 1: if st[i]=' ' then ind:=0; // Если встретился пробел после символов end; end;
Label3.Caption:=IntToStr(n); // Вывод числа слов в Label3
end;
end.
Рисунок 14.2 Варианты заданий. Вариант 1. Дана строка, состоящая из групп нулей и единиц. Каждая группа отделяется от другой одним или несколькими пробелами. Найти количество групп с пятью символами. Вариант 2. Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран самую короткую группу. Вариант 3. Дана строка, состоящая из групп нулей и единиц. Подсчитать количество символов в самой длинной группе. Вариант 4. Вывести строку длины N (N — четное), которая состоит из чередующихся символов C1 и C2, начиная с C1. Вариант 5. Дана строка. Вывести строку, содержащую те же символы, но расположенные в обратном порядке. Вариант 6. Дана строка. Вывести коды ее первого и последнего символа. Вариант7. Дана строка. Подсчитать количество содержащихся в ней цифр1|[прописных букв]2|[строчных букв]3. Вариант 8. Дана строка. Преобразовать все строчные1|прописные2 латинские3|русские4 буквы в прописные1|строчные2. Вариант 9. Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2; если строку нельзя преобразовать в число, то вывести 0. Вариант 10. Дано целое число. Вывести набор символов, содержащий цифры этого числа в исходном1|обратном2 порядке. Вариант 11. Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (> 0). Вывести набор символов, изображающих первые N цифр дробной части этого вещественного числа (без округления). Вариант 12. Дана строка, изображающая двоичную1|десятичную2 запись целого числа. Вывести строку, изображающую десятичную1|двоичную2 запись этого же числа. Вариант 13. Дана строка, изображающая целое число. Вывести сумму цифр этого числа. Вариант 14. Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы "." (точка). Вариант 15. Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2. Вариант 16. Даны две строки: S1 и S2. Проверить, содержится ли строка S2 в строке S1. Если да, то вывести номер позиции, начиная с которой S2 содержится в S1, если нет, то вывести 0. Вариант 17. Даны две строки: S1 и S2. Определить количество вхождений строки S2 в строку S1. Вариант 18. Дана строка S и символ C. Удвоить каждое вхождение qhlbnk` C в строку S. Контрольные вопросы:
1. Какая функция определяет длину строки? 2. Процедура удаления фрагмента из строки? 3. Функции преобразования, использующие целый тип данных? 4. Как произвести ввод и вывод строки в приложении? 5. Какие компоненты необходимы для работы со строками?
Лабораторная работа № 15 Использование компонентов многострочного редактора для одномерных массивов. Цель работы: Изучить свойства компонента TMemo. Написать программу с использованием массивов. Теория.
|
||||
Последнее изменение этой страницы: 2016-08-26; просмотров: 615; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.148.106.49 (0.005 с.) |