Смекни!
smekni.com

Методические указания к выполнению лабораторных работ Фрейз И. И (стр. 8 из 11)

WIWOD(p,12);

m[2]:=Max(p,12);writeln;

writeln('Maksimal P=',m[2]);

writeln;

writeln ('Massiv T');

WIWOD(t,33);

m[3]:=Max(t,33);writeln;

writeln('Maksimal T=',m[3]);

maxi:=Max(m,3);

writeln('Max=',maxi);writeln;

zamena(a,22);

writeln('Noviy A');

WIWOD(a,22);

zamena(p,12);writeln;

writeln('Noviy P');

WIWOD(p,12);

zamena(t,33);writeln;

writeln('Noviy T');

WIWOD(t,33);

readln;

end.

Задача 3. В матрице А(4,8) определить с помощью функции разность между максимальным и минимальным элементом каждой строки и записать в дополнительный столбец в основной программе. Предусмотреть вывод начального массива и массива после дозаписи.

Лабораторная работа №13-14. Строки.

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

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

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

A: string[5]

5 О С Е Н Ь

- строка

B: array[1..5] of char

О С Е Н Ь

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

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

  1. I способ

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

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

(до 255)

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

II способ

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

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

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

Var A:string;

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

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

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

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

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 – номер ошибочного символа.

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

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 символов. Текст не содержит переносов слов.

Лабораторная работа № 15. Исследовательско - практическая работа.

Цель: закрепление знаний, развитие навыков само­стоятельной работы.

Ход урока.

На данном уроке закрепляются знания, полученные на предыдущем уроке, и проводится самостоятельная иссле­довательская работа.

Для закрепления знаний можно воспользоваться про­граммой, предлагаемой в качестве поддержки урока

program А8; {Строковые переменные}

uses crt;

var i,m:integer;

c,ch:char; s,s1: string;

begin

ClrScr;

GotoXY(10,3);

Writeln ('Вы работаете с программой демонстрации

строковых переменных'); Writeln; Writeln(‘ Введите 7-10 символов.');

GotoXY(5,8);

Readln(s);

Writeln;

Writeln(‘ Вы ввели строку символов: ',s);

Writeln;

i:=length(s);

m:=Round(i/2);

if m<>0 then c:=s[m];>

Writeln(‘ Количество символов в строке: ',i);

Writeln;

Writeln(‘ В середине строки есть символ: ',с);

Writeln;

Writeln(‘ Последний символ строки:

',copy(s,length(s),l));

Writeln;

Write(‘ А вот ваша строка "задом наперед":'); ". for m:=i downto 1 do write(s[m]);

Writeln; si :="; Writeln;

for m:=0 to i do

begin
if (ord(s[m])>127) and (ord(s[m])<176) then

1sl:=sl+s[m];

if (ord(s[m])>223) and (ord(s[m])<240) then

sl:=sl+s[m];

end;

if length(s1)<>O then Writeln(‘ В строке есть русские буквы: ',s1);

Writeln;

sl:=";

for m:=0 to i do if (ord(s[m])>47) and (ord(s[m])<58) thensl:=sl+'s[m];

if length(sl)oO then WritelnC В строке есть цифры: ',sl);

sl:=";

for m:=0 to i do

begin
if (ord(s[m])>64) and (ord(s[m])<91) then sl:=sl+s[m];
if (ord(s[m])>96) and (ord(s[m])<123) then

sl:=sl+s[m];

end;

Writeln;

if length(sl)oO then Writeln(' В строке есть латинские

буквы: ',sl);

if (ord(s[lJ)>128) and (ord(s[l])<159) then Writeln('Привет,',s+'!'); ch:=ReadKey end.

Необходимо решить задачи:

1. Вызовите программу А8, исполните ее. Обратите внимание, как в программе проводится формирование строки из отдельных символов, как из строковой перемен­ной выделяются отдельные символы и как работают ос­новные функции и процедуры.

2. Придумайте свои варианты обработки информации в форме строк символов.

3. Составьте программу, преобразующую число в строку символов и строку символов-цифр в число.

После этого даем студентам задание:

1. В процедуре Val(s,x,Gode) используется переменная code типа word. Она принимает значение О, если преобра­зование строки в число проведено успешно. Определите назначение этой переменной в случае, если при преобра­зовании строки в число обнаружен символ, который не яв­ляется атрибутом числа.

2. При записи идентификаторов и операторов пропис­ные и строчные буквы не различаются. Выясните, разли­чаются ли прописные и строчные буквы в значениях стро­ковых переменных, в частности, при операциях сравнения.

3. При нажатии клавиши Enter в файл записывается символ конца строки, не имеющий изображения на экране дисплея. Найдите информацию об использовании стан­дартной функции eoln, распознающей этот символ.

Домашнее задание: повторить [1] п. 14.4., 14.3; подготовиться к контрольной работе. Выполнить решение задач:

Составить алгоритм, подсчитывающий количество тех слов в строке из N букв, в которых третьей является заданная буква Ь. Слова разделены пробелами. Других зна­ков препинания нет.

Лабораторная работа №16. Решение задач.

Цель: закрепление знаний, подготовка к контрольной работе.

Ход урока;

Проверка домашнего задания с анализом выполненных ими программ. Студенты, успешно справившиеся с домашним заданием, предлагаем перейти к решению задач.

Примерные тексты задач.

  1. Задана строка, содержащая буквы и числа. Найти произведение всех чисел заданной строки (использовать тип данных long, int для вывода произведения).
  2. Составить алгоритм, подсчитывающий количество тех слов в строке из N букв, в которых третьей является заданная буква ь. Слова разделены пробелами. Других знаков препинания нет.
  3. Написать программу, которая по введенному коду выдает на экран символ.
  4. Написать программу, которая выведет следующую конструкцию из символов:

а

аб

абс

абсд

аб...я.

Домашнее задание: повторить процедуры работы со строковыми величинами и приемы обработки массивов, просмотреть решение задач на строковые величины и двумерные массивы, подготовиться к контрольной работе.

Лабораторная работа №17. Контрольная работа «Строковые величины и двумерные массивы».

Цель: проверка знаний студентов, навыков самостоятельного решения задач и умения применять полученные знания на практике.

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

Вариант 1.

1. Имеется двумерный массив целых положительных чисел. Найти номер строки, для которой среднеарифмети­ческое значение ее элементов максимально.

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

Вариант 2.