Помощничек
Главная | Обратная связь


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

Функции обработки строковых переменных



 

length(s:string):byte - подсчитывается фактическая длина строки, включая пробелы и знаки препинания.

Например:

s:=’Москва’;

wrtiteln(length(s));

 

Результат на экране:

Число 6, количество символов в сломе Москва.

 

copy(s:string,i,n):string -

копируется фрагмент строки s.

Где s - переменная, из которой копируется фрагмент;

i - позиция, с которой копируется;

n - количество копируемых символов.

 

Если i и n - вне пределов строки, сообщения об ошибке не будет.

Если i>length(s ) результат - строка нулевой длины.

Если n >length(s ) результат - фрагмент от i до конца строки.

Например:

s:='электрификация';

b:=copy(s,8,3)+copy(s,12,3);

writeln(s);

Результат на экране:

фикция

 

pos(t:string,s:string):byte -

осуществляет поиск подстроки t в строке s.

Результатом этой функции является позиция вхождения t в s. Если подстрока не найден - результат 0.

Например:

t:='ритм'; s:='алгоритм';

k:=pos(t,s);

wrieln(‘k=’,k);

Результат на экране:

k=5

 

Процедуры обработки строковых переменных

 

insert(t,s,i);

- вставить подстроку t в строку s начиная, начиная с позиции i.

Например:

s:='ритм';

insert(‘алго’,s,1);

wrieln(s);

 

Результат на экране:

алгоритм

 

 

delete(s,i,n) ;

- удалить из строки s с позиции i - n символов.

Например:

s:='алгоритм';

delete(s,1,4);

writeln(s);

Результат на экране:

ритм

 

i,n - в процедурах insert и delete обязательно должны присутствовать в строке s. Иначе - сообщение об ошибке.

Примеры обработки строковых переменных

 

Задача.

В произвольном тексте заменить все сочетания “чя” на “ча”.

Таблица идентификаторов

Наименование переменной Обозначения в программе
Текст Text
Индекс массива i

 

Program word_text;

Uses crt;

var

text:string;

i:integer;

begin

clrscr;

writeln(‘Введите текст’);

readln(text);

for i:=1 to length(text)-1 do

if copy(text,i,2)=‘чя’ then

begin

delete (text,i+1,1);

insert (‘a’,text,i+1);

end;

writeln(‘Преобразованный текст’);

writeln(text);

readln;

end.

 

Задача.

В произвольном тексте (text) в слове word заменить первую букву на заглавную и подсчитать количество замен (текст латинский).

Таблица идентификаторов

Наименование переменной Обозначения в программе
Текст text
Слово word
Индекс массива i
Количество замен s

 

Program word_text1;

Uses crt;

var

text,word:string;

s,i:integer;

begin

writeln(‘Введите текст’);

readln(text);

s: =0;

writeln(‘Введите слово’);

readln(word);

for i:=1 to length(text)-lenght(word)+1 do

if copy(text,i,length(word))=word then

begin

s:=s+1;

text[i]:=upcase(text[i]);

end;

writeln (s);

readln;

end.

 

Задача.

Заменить в произвольном тексте все слова word1 на слово word2.

 

Таблица идентификаторов

Наименование переменной Обозначения в программе
Текст text
Слова первое word1
Слова второе word2
Индекс i

Program word_text2;

var

text,word1,word2:string;

i:integer;

begin

writeln(‘Введите исходный текст’);

readln text);

writeln(‘Введите первое слово’);

readln(word1);

writeln(‘Введите второе слово’);

readln(word2);

repeat

i:=pos(word1,text)

if i<>0 then

begin

delete(text,i,length(word1));

insert(word2,text,i);

end;

until i=0;

writeln(‘Преобразованный текст’);

writeln(text);

readln;

end.

 

Вопросы для самоконтроля

  1. Какие типы данных используются для обработки текста?
  2. Сколько байт памяти занимает символьная переменная?
  3. Какие операции допустимы над символьными переменными?
  4. Перечислите функции обработки символьных переменных?
  5. Что такое строка?
  6. Сколько байт памяти занимает строковая переменная?
  7. Какие операции допустимы над строковыми переменными?
  8. Перечислите функции и процедуры обработки строковых переменных?
  9. Как можно обратиться к отдельным символам строки?

Структурированные типы данных

 

При решении задач обработки большого количества данных используют массивы. Но при работе с массивами основное ограничение заключается в том, что все элементы массива должны быть одного типа. Для работы с комбинированными типами данных применяют записи.

Записи

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

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

 

Например:

type

student = record; {запись}

surname : string[20];

year : integer;

bal : real;

end; {завершает список полей}

var

st:student;

Сформирован пользовательский тип данных – student, он базируется на стандартных типах (string, integer,real).

Переменная st - имеет тип student (запись), состоит из 3-х полей:

surname – фамилия студента;

year – год рождения;

bal – средний бал.

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

st.surname:='Иванов';

st.year:=1905;

st.bal:=4.5;

Для уменьшения записи обращения к отдельным полям используют оператор with … do

Например:

with st do

begin

surname:='Иванов';

year:= 1905;

bal:=4.5;

end;

Для обработки большого объема информации комбинированного типа целесообразно строить массивы записей, где каждый элемент массива – запись, состоящая из нескольких полей разного типа.

Например, чтобы сохранить информацию о студентах группы в 25 человек, можно создать следующий массив записей:

type

student = record; {запись}

surname : string[20];

year : integer;

bal : real;

end;

var

st:array[ 1..25 ] of student;

 

st – массив записей. Каждый элемент массива(St[i])содержит информацию об одном студенте:

St[i].surname – фамилия;

St[i].year - год рождения;

St[i].bal - средний бал.

 

Задача.

Создать массив записей, содержащий информацию о студентах группы. Каждая запись содержит поля – фамилия, год рождения, пол. Подсчитать средний возраст студентов мужского пола группы.

 

Таблица идентификаторов

 

Наименование переменной Обозначения в программе
Имя массива st
Количество студентов n
Индекс массива i
Средний возраст p
Количество мужчин k
Текущий год t

 

program rec;

uses crt;

type

student = record; {запись}

surname : string[20];

year : integer;

pol : char;

end;

var

st:array[ 1..30 ] of student;

i,n,t:integer; p:real;

 

begin

clrscr;

writeln(‘Введите текущий год’);

readln(t)

writeln(‘Введите количество студентов’);

readln(n)

for i:=1 to n do

with st[i] do

begin

writeln(‘Сведения о ’,i,‘ студенте’);

writeln(‘Введите фамилию’); readln(surname);

writeln(‘Введите год рождения’); readln(year);

writeln(‘Введите средний бал’); readln(bal);

end;

p:=0;

for i:=1 to n do

begin

if st[i].pol=’m’ then

begin

p:=p+(t-st[i].year);

k:=k+1;

end;

writeln(‘Средний возраст мужчин =’,(p/k):8:3 );

readln;

end.

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.