Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_Паскаль_1_2_3_4.doc
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
238.08 Кб
Скачать

Варианты заданий

Вычислить сумму элементов на побочной диагонали двумерного массива.

Вычислить сумму элементов, находящихся выше главной диагонали двумерного массива.

В одномерном массиве поменять местами максимальный и минимальный элементы.

В двумерном массиве поменять местами столбцы с максимальным и минимальным элементами.

В двумерном массиве поменять местами строки с максимальным и минимальным элементами.

Упорядочить элементы массива по возрастанию.

Подсчитать количество пар одинаковых соседних элементов в одномерном массиве.

Инверсировать одномерный массив (расположить его элементы в обратном порядке).

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

В двумерном массиве (NxN) произвести зеркальное отражение относительно горизонтальной оси симметрии.

В двумерном массиве (NxN) произвести зеркальное отражение относительно вертикальной оси симметрии.

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

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

Повернуть двумерный массив на 90о по часовой стрелке.

Повернуть двумерный массив на 90о против часовой стрелки.

В двумерном массиве (NxM) найти и вывести максимальные элементы по столбцам с указанием значения и местоположения.

В двумерном массиве (NxM) найти и вывести максимальные элементы по строкам с указанием значения и местоположения

Перемножить 2 матрицы (NxM) по правилам матричного произведения.

Требования к оформлению отчета приведены в разделе "Содержание и оформление отчета".

Лабораторная работа № 4 Цель работы

Изучение работы со строковыми переменными.

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

Стандартный тип строка (string) – последовательность символов длиной до 255 символов. Строку можно рассматривать как массив символов.

У строки в квадратных скобках может быть указан ее размер (от 1 до 255). Если размер строки не указан, то он считается равным 255.

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

var

Str : String[80];

MaxStr : String;

const

January : String[10]='Январь';

Конкатенация строк

Данная операция объединяет (или добавляет к первой строке вторую).

Пример 14:

var

Str, Str1, Str2 : String;

begin

Str1 := 'Turbo';

Str2 := 'Pascal';

Str := Str1 + Str2;

end;

Результатом работы программы примера 14 будет значение переменной Str='TurboPascal'.

Сравнение строк

Можно сравнивать строки разной длины. Сравнение осуществляется слева направо в соответствии с ASCII-кодами символов. Отсутствующие символы в короткой строке имеют меньший код, чем любой действительный символ.

Пример 15:

const

Str1 : string='X';

Str2 : string='XS';

var

S1, S2 : String;

begin

if Str1 > Str2 then writeln('Str1>Str2')

else writeln('Str1<=Str2');

S1 := '10';

S2 := '9';

if S1 > S2 then Writeln('S1>S2')

else Writeln('S1<=S2');

end.

Результатом работы программы в примере 15 являются сообщения Str1<=Str2 и S1<=S2.

Следует отметить, что результаты сравнения чисел как строковых переменных отличаются от обычного сравнения чисел, например, '10'<'9', так как первый символ строки '10' имеет меньший код, чем первый символ строки '9'.

Функции, применяемые при работе со строками (модуль System)

Функция

Описание

Length(S : String) : Integer

возвращает длину строки

Copy(S : String; iStart : Integer; iLen : Integer) : String

выделение подстроки в строке S, начиная с позиции iStart длиной iLen

Concat(S1 [, S2, …, Sn] : String) : String

объединение n строк в одну

Pos(SubStr, S : String)

поиск подстроки SubStr в строке S. Возвращает 0, если вхождение не найдено

Процедуры, применяемые при работе со строками (модуль System)

Процедура

Описание

Delete(var S : String; Index : Integer; Count : Integer)

удаление подстроки длиной Count, начиная с Index из строки S

Insert(Source : String; var S : String; Index : Integer)

помещение подстроки Source в строку S, начиная с позиции Index

Str(X [:M[:N]]; var S : String)

преобразование числа X в строковую переменную S; M, N – форматы вывода, аналогичные используемым в процедуре Write

Val(S : String; var V; var ErrCode : Integer)

преобразование символьного представления числа S в двоичное V. Code – номер неправильного символа (0 – успешное преобразование).

Фактически строка N символов представляет собой массив из N+1 символов:

String[N]=array [0..N] of Char;

Однако данная запись условна и строка не эквивалентна такому массиву.

Нулевой символ хранит действительно используемое количество символов строки.

Пример 16:

var

S, S1 : String;

I, ErrCode : Integer;

begin

S := 'Привет мир';

writeln(copy(S,8,3));

{удалим пробелы}

S1 := '';

for I := 1 to length(S) do

if S[i] <> ' ' then S1 := S1 + S[i];

S := S1;

writeln(S);

{заменим "и" на "а"}

for I := 1 to length(S) do

if S[i] = 'и ' then S[i] := 'а';

writeln(S);

Str(1/3:4:2, S);

writeln(S);

S := '4.6';

Val(S, I, ErrCode);

if ErrCode <> 0 then writeln('Успешная конвертация, I=',I)

else writeln('Ошибка конвертации!');

end.

Программа в примере 16 сначала выводит строку 'мир', затем удаляет из строки S пробелы и выводит строку 'Приветмир', затем заменяет символы 'и' на 'а' и выводит строку 'Праветмар'. Далее конвертирует число 1/3 в строку '0.33'. Затем конвертирует строку '4.6' в число и выводит на экран "Успешная конвертация, I=4.6".