Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тема№14 Двумерные массивы и вложенные циклы




Тема№13 Строковые переменные. Процедуры и функции для работы со строками

При работе со строками, как правило, возникает необходимость выполнять их копирование, вставку, удаление или поиск. Для эффективной реализации этих действий в Паскале предусмотрены стандартные процедуры и функции. Они кратко описаны ниже.

 

Функция Concat (s1, s2,..., sn) возвращает строку, являющуюся слиянием строк s1, s2,..., sn.

 

Функция Copy (s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s.

 

Процедура Delete (s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len.

 

Процедура Insert (subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start.

 

Функция Length (s) возвращает фактическую длину строки s, результат имеет тип byte.

 

Функция Pos (subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или нуль, если subs не содержится в s.

 

Процедуры преобразования типов

Процедура Str (x, s) преобразует числовое значение x в строку s, при этом для x может быть задан формат, как в процедурах вывода write и writeln. Например:

 

x:= 123;

s:= str(x:6,s);

Результат: s = ' 123'.

 

Процедура Val (s, x, errcode) преобразует строку s в значение числовой переменной x, при этом строка s должна содержать символьное представление числа. В случае успешного преобразования переменная errcode равна нулю. Если же обнаружена ошибка, то errcode будет содержать номер позиции первого ошибочного символа, а значение x не определено.

 

Двумерные массивы

 

Описание

 

Массивы, положение элементов в которых описывается двумя индексами, называются двумерными. Их можно представить в виде прямоугольной таблицы или матрицы.

 

Рассмотрим матрицу А размерностью 2*3, то есть в ней будет две строки, а в каждой строке по три элемента:

 

Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел - номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца. Например, a12 - это элемент, стоящий в первой строке и во втором столбце.

 

Существуют несколько способов объявления двумерного массива.

 

Способ 1. В Паскале двумерный массив можно описать как одномерный, элементами которого являются одномерные массивы. Например, для матрицы А, приведённой выше:

 

Const n = 2; m = 3;

Type omyarray = Array[1..m] Of <тип элементов >;

dmyarray = Array[1..n] Of omyarray;

Var v: omyarray;

a: dmyarray;

 

В данном случае переменная v объявлена как одномерный массив из трёх элементов вещественного типа. Переменная а описана как двумерный массив из двух строк, каждую из которых включено по три элемента.

 

Способ 2. Описание массива А можно сократить, исключив определение типа omyarray в определении типа dmyarray:

 

Const n = 2; m = 3;

Type dmyarray = Array[1..n, 1..m] Of <тип элементов>;

Var a: dmyarray.

 

Способ 3. Ещё более краткое описание массива А можно получить, указывая имя массива и диапазоны изменения индексов для каждой размерности массива:

 

Const n = 2; m = 3;

Type dmyarray = Array[1..n, 1..m] Of <тип элементов >;

 

Var a: dmyarray.

 

Если указанный тип используется для определения одного массива в программе, то удобно объявление массива в разделе описания переменных:

 

Var a: Array [1..n, 1..m] Of < тип элементов >.

 

Рассмотренные выше методы решения задач обработки одномерных массивов могут применяться для обработки двумерных массивов. Поскольку положение элемента в двумерном массиве описывается двумя индексами [первый - номер строки, второй - номер столбца], программы большинства матричных задач строятся на основе вложенных циклов. Обычно внешний цикл работает по строкам матрицы, то есть с его помощью выбирается требуемая строка матрицы, а внутренний цикл - по столбцам матрицы, то есть здесь выбирается нужный элемент из выбранной уже строки. Для задания значений элементам массива могут быть использованы операторы присваивания и операторы ввода данных.

 

Пример 1

 

В приведённом ниже примере осуществляется ввод и вывод двумерного массива А размерностью 10*15. Формирование и вывод массива описаны в виде двух процедур, которые вызываются последовательно из основной программы. Надо заметить, что формирование двумерного массива можно осуществлять всеми тремя способами, описанными для одномерных массивов, то есть: ввод с клавиатуры, через генератор случайных чисел или с помощью файла. Пусть в нашем примере элементы задаются генератором случайных чисел.

 

Program Example_45;

Const n = 2; m = 15;

Type dmyarray = Array[1..n., 1..m] Of Integer;

Var A: dmyarray;

Procedure Init(Var x: dmyarray); {процедура формирования массива}

Var i, j: Integer;

Begin

For i:=1 To n Do

For j:=1 To m Do

x[i,j]:=-25+Random(51);

End;

 

Procedure Print(x: dmyarray); {процедура вывода массива на экран}

Var i, j: Integer;

Begin

For i:=1 To n Do

Begin {ввод i-ой строки массива}

For j:=1 To n Do Write(x[i,j]:5);

Writeln; {переход на начало следующей строки}

End;

 

Begin{основная программа}

Init(A); {вызов процедуры формирования массива}

Writeln('Массив А:');

Print(A); {вызов процедуры вывода}

Readln;

End.

 




Поделиться с друзьями:


Дата добавления: 2015-04-24; Просмотров: 874; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.