Перестановка элементов массива

Перестановка двух элементов

Пример 1

Поменять местами два элемента массива А с задан­ными координатами (номерами строки и столбца).

Решение

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

Program Example_124;

Procedure Swap1(k1, l1, k2, l2: Integer;

Varx: dmyarray);

Var c: Integer;

Begin

c:=x[k1, l1]; x[k1, l1]:=x[k2,l2];

x[k2,l2]:=c;

End;

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

Program Example_125;

Procedure Swap(Varx, у: Integer);

Var z: Integer;

Begin

z:=x; x:=y; y:=z;

End;

А теперь обратимся к ней, передавая данные эле­менты: Swap(A[k1, l1], A[k2, l2]).

Рассмотрим задачу о перестановке двух столбцов (строк), так как многие задачи используют это действие.

Пример 2

Поменять местами столбцы с номерами l1 и l2. Эту задачу также можно решить несколькими спо­собами. Составим процедуру, в которую будем переда­вать номера столбцов, и массив, в котором надо их переставить. Кроме того, добавим проверку коррект­ности ввода данных номеров, так как если столбца с данным номером нет, то и переставлять ничего не надо. В самой процедуре можно использовать, например, процедуру Swap

Program Example_126;

Procedure Swap2(l1, l2: Integer;

Var x: dmyarray);

Var i: Integer;

Begin

If (l1<1) Or (l1>m)) Or (l2<1)

Or (12>m)) Then

Writeln ('Ввод неправильный')

Else

For i:=1 To m Do

Swap(x[i, l1], x[i, l2]);

End;

Если применять первую процедуру Swap1, то после проверки правильности ввода данных будет такое обра­щение:

For i:=1 То m Do

Swap1(i, l1, i, l2, x);

СТРОКОВЫЙ ТИП ДАННЫХ

Описание

Строкой называется последовательность заданной дли­ны, состоящая из символов.

Строки (переменные типа String) могут быть объяв­лены, например, следующим образом:

Var Str1: String[30]; Str2: String;

При объявлении строковой переменной в квадрат­ных скобках может указываться длина строки. Если дли­на строки не указана, то она принимается равной 255. Максимальная длина строки также равна 255. В дан­ном случае в первой строке может содержаться макси­мум 30 символов, а во второй − 255. Надо заметить, что строка похожа на одномерный массив символов: она имеет определенную длину (не больше некоторого числа), к каждому символу можно обратиться по его номеру (как в массиве) – Str1[i] − это обраще­ние к i−му элементу строки Str1.

Переменные типа String выводятся на экран по­средством стандартных процедур Write и Writeln и вводятся с помощью стандартных процедур Readln и Read. To есть вводятся и выводятся не поэлементно, как массивы, а целиком.

Примечание. Если при вводе задать символов больше, чем максимально допустимо, то лишние символы будут проигно­рированы.

Операции со строками

В Паскале имеется два основных способа обработки переменных типа String. Первый способ предпола­гает обработку всей строки как единого целого, т.е. единого объекта. Кроме того (это второй способ), мож­но рассматривать строку как составной объект, состоя­щий из отдельных символов, то есть элементов типа Char, которые при обработке доступны каждый в от­дельности.

Склеивание

Под склеиванием понимается последовательное объе­динение нескольких строк.

Пример

Var Str1, Str2, Str3: String[20];

Str1:='y Егорки';

Str2:='всегда отговорки';

Str3:=Str1+' '+Str2;

Строка Str3 имеет значение 'У Егорки всегда отго'. В данном примере максимальная длина стро­ки Str3 равна 20 символам, поэтому будут взяты только первые 20 символов суммы строк, а остальные рассматриваться не будут. Паскаль позволяет выпол­нять операции объединения (сцепления) нескольких строк в процессе их присвоения какой-либо перемен­ной: Str3:= 'У Егорки '+' всегда '+' отговорки'. В результате такой операции в пере­менной Str3 будет то же самое содержимое, что и в предыдущем примере.

Примечание. "Склеить" строки можно также при помо­щи функции

Concat(Str1, Str2,..., StrN).

Сравнение

Паскаль позволяет выполнять операции сравнения двух строк. Сравнение происходит посимвольно слева направо: сравниваются коды соответствующих симво­лов до тех пор, пока не нарушится равенство или не кончится одна из строк (или обе сразу), при этом сра­зу делается вывод о знаке неравенства. Две строки на­зываются равными, если они равны по длине и совпа­дают посимвольно.

Пример

'Balkon'<'balkon'(Ord(' B' )<Ord('b'));

'balkon'>'balken'(Ord('o')>0rd('e')) ;

'balkon'>'balk' (длина первой строки больше);

'кошка '>'кошка' (длина первой строки больше);

'кот'='кот' (равны по длине и совпадают посимвольно).

Можно использовать любые операции отношения (>, <, =, <>, >=, =<) и их комбинации в условных операторах. Их результат − это одно из двух значений: True или False.

Для доступа к отдельному символу в строке необходи­мо указать имя строки и в квадратных скобках номер позиции элемента (символа) в строке. При этом по от­ношению к отдельному символу строки возможны все те же операции, что и к переменной типа Char.

Наши рекомендации