Лабораторная работа №13-14. Строки.
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Цель: Освоить на практике новый тип данных – строка, научиться работать с текстом.

Теоретическая часть.

1. Понятие строки и размещение в памяти.

2. Описание строки.

3. Действия над строками. Операторы.

4. Примеры программ.

 

1. Определение. Строки – это структурируемый тип данных, представляющий собой последовательность из набора символов кодовой таблицы. Всего 255 символов. По устройству данный тип очень близок понятию массив.

A: string[5]

5 О С Е Н Ь

- строка

 

B: array[1..5] of char  

О С Е Н Ь

- массив из символов

 

В отличие от массива первый (т.е. нулевой) байт памяти содержит информацию по количеству символов в строке. Поэтому, если строка описана длиной 10 символов, то любые символы введенные с терминала или добавляемые к строке после 10 будут игнорироваться.

 

2. I способ

Type <название типа 1> = string[10];

<название типа 2> = string;

                                          (до 255)

 

  Var <идентификатор>:<название типа>;

 

       II способ

Var <идентификатор>: string[ ];

                                    зарезерв длина

Замечание. Если две строки А и В описаны одинаково, то разрешено присвоение A:=B. Однако сравнение двух строк разрешается посимвольно. Обращение к каждому символу в строке аналогично доступу к каждому элементу в массиве.

Var A:string;

A[1] – первый символ

A[2 – второй символ

A[i – I – ый символ

 

3. Действия над строками.

a) Можно складывать, причем сложение строк неперестановочно: . Сложение наз-ся конкатенация. Concat – равносильно сложению нескольких строк. Результат в 1 –ой строке concat(a1,a2,a3)

b) Присвоение

c) Разрешается сравнение строк, при этом учитывается номер каждого символа из кодовой таблицы.

Пример 'кот'<'котомка'

     'котт' > 'кота'

      'аа' < 'ааа'

      'а' < 'я'

Все символы русского и латинского алфавитов имеют коды соответствующих их порядку, т.е. 'А' < 'В'

Разрешены процедуры и функции над строками.

1) Copy (st,p,n)

Из строки st копируется n символов в память, начиная с позиции p.

2) Delete (st,p,n)

Из строки st удаляется n символов, начиная с p.

3) Insert(st1,st2,p)

Вставить строку st1 в st2, начиная с позиции p.

4) Length (st)

Вычисляет длину строки st.

5) Pos (st1,st2)

Находит позицию первого появления строки st1 в строке st2.

6) Str(n,st)

Процедура перевода цел. Переменной n в строку st.

7) Val(st,n,m)

Процедура переводит содержимое строки st в целочисленную переменную n, причем m – номер ошибочного символа.

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

uses crt;

var

s:string;

x:char;

n,i,m:byte;

mas:array[1..10] of string;

begin clrscr;

s:='Уж небо осенью дышало';

n:=length(s);m:=1; mas[m]:=' ';            {Обнуление нового слова}

for i:=1 to n do

    if s[i]=' ' then begin

                          m:=m+1;

                          mas[m]:=' ';

                     end

                else mas[m]:=mas[m]+s[i];

    n:=0;

    for i:=1 to m do

    begin

         writeln(mas[i]);

         if mas[i,1] in ['T','t'] then inc(n)

    end;

    writeln('Количество слов, начин-ся с  c T=',n);

    readln;

end.

 

Индивидуальное задание:

1) Записать все слова строки T в одномерный массив. Подсчитать количество слов, количество букв в которых нечетно.

uses crt;

const raz=[' ',',','.',';','-',':','!','?'];

var t:string;

mas:array[1..15] of string;

i,n,m:byte;

begin clrscr;

writeln('Vvedite stroku');

readln(t);

n:=length(t); m:=1;

mas[m]:='';

for i:=1 to n do

               if t[i] in raz then begin

                                    while(t[i] in raz) do inc(i);

                                    inc(m);mas[m]:=t[i];

                                    end

                               else mas[m]:=mas[m]+t[i];

writeln;

writeln;

writeln('Massiv:');

for i:=1 to m do writeln(mas[i],' ',length(mas[i]));

n:=0;

for i:=1 to m do

    if odd(length(mas[i])) then inc(n);

writeln('Kol-vo netetn slov=',n);

readln;

end.

 

2) Ввести строку A: string с клавиатуры. Заменить все встретившиеся строчные буквы на такие же прописные и вывести строку А после изменения.

3) Написать программу, определяющую, сколько раз встретилось заданное слово в текстовом файле, длина строки в котором не превышает 80 символов. Текст не содержит переносов слов.

 



Дата: 2019-12-22, просмотров: 377.