Представление списка в виде массива


Способы создания массивов


Download 29.77 Kb.
bet3/4
Sana16.11.2023
Hajmi29.77 Kb.
#1777631
1   2   3   4
Bog'liq
30484-Самостоятельная работа №2 Структура данных и алгоритм

Способы создания массивов.


const n = 200;
type
months = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec);
years = 1900..2100;
people = array[years] of longint;
var
growth: array[months] of real;
hum: people;
notes: array[1..n] of string;
Обращение к определенному элементу массива осуществляется путем указания имени переменной массива и в квадратных скобках индекса элемента. Простой массив является одномерным. Он представляет собой линейную структуру.
var ch: array [1..11] of char;
h: char;
i: integer;
begin
for i := 1 to 11 do read (ch[i]);
for i := 1 to 11 do write (ch[i]:3);
readln
end.
В примере выделяется область памяти под массив из 11 символов. Их индексы от 1 до 11. В процессе выполнения программы пользователь вводит 11 любых символов (например, `q', 'w', 'e', '2', 't', '9', 'u', 'I', 'I', 'o', 'p'), которые записываются в ячейки массива. Текущее значение переменной i в цикле for используется в качестве индекса массива. Второй цикл for отвечает за вывод элементов массива на экранФункция sizeof, примененная к имени массива или имени массивного типа, возвращает количество байтов, отводимое под массив.В задачах по программированию очень часто встречается необходимость заполнить массив данными и вывести их потом на экран. Методов этого не так уж много и особым разнообразием они не отличаются.
Поэтому хорошо бы их оформить в виде процедур и использовать по мере необходимости Алгоритм решения задачи: Создадим две процедуры заполнения одномерного массива целыми числами: одну с использованием функции random и одну, где пользователь самостоятельно задает значения. Также создадим процедуру вывода массива на экран. Затем вызовем в основной ветке программы эти процедуры, передав им в качестве аргументов переменные, связанные с массивами.
Массивы - это совокупности однотипных элементов. Характеризуются они следующим: каждый компонент массива может быть явно обозначен и к нему имеется прямой доступ; число компонент массива определяется при его описании и в дальнейшем не меняется. Для обозначения компонент массива используется имя переменной-массива и так называемые индексы, которые обычно указывают желаемый элемент. Тип индекса может быть только порядковым (кроме longint). Чаще всего используется интервальный тип (диапазон). Описание типа массива задается следующим образом:
type
имя типа = array[ список индексов ] of тип
Здесь имя типа - правильный идентификатор; список индексов - список одного или нескольких индексных типов, разделенных запятыми; тип - любой тип данных. Вводить и выводить массивы можно только поэлементно.
Пример 1. Ввод и вывод одномерного массива.
const
n = 5;
type
mas = array[1..n] of integer;
var
a: mas;
i: byte;
begin
writeln('введите элементы массива');
for i:=1 to n do readln(a[i]);
writeln('вывод элементов массива:');
for i:=1 to n do write(a[i]:5);
end.
Определить переменную как массив можно и непосредственно при ее описании, без предварительного описания типа массива, например:
var a,b,c: array[1..10] of integer;
Если массивы a и b описаны как:
var
a = array[1..5] of integer;
b = array[1..5] of integer;
то переменные a и b считаются разных типов. Для обеспечения совместимости применяйте описание переменных через предварительное описание типа. Если типы массивов идентичны, то в программе один массив может быть присвоен другому. В этом случае значения всех переменных одного массива будет присвоены соответствующим элементам второго массива. Вместе с тем, над массивами не определены операции отношения. Сравнивать два массива можно только поэлементно. Так как тип, идущий за ключевым словом of в описании массива, - любой тип то он может быть и другим массивом. Например:
type
mas = array[1..5] of array[1..10] of integer;
Такую запись можно заменить более компактной:
type
mas = array[1..5, 1..10] of integer;
Таким образом возникает понятие многомерного массива. Глубина вложенности массивов произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничена, однако не может быть более 65520 байт. Работа с многомерными массивами почти всегда связана с организацией вложенных циклов. Так, чтобы заполнить двумерный массив (матрицу) случайными числами, используют конструкцию вида:
for i:=1 to m do
for j:=1 to n do a[i,j]:=random(10);
Для "красивого" вывода матрицы на экран используйте такой цикл:
for i:=1 to m do begin
for j:=1 to n do write(a[i,j]:5);
writeln;
end;

  1. Строки

При работе со строками, как правило, возникает необходимость выполнять их копирование, вставку, удаление или поиск. Для эффективной реализации этих действий в Паскале предусмотрены стандартные процедуры и функции. Они кратко описаны ниже. Функция 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 не определено.В языке программирования Паскаль переменная типа array of char может рассматриваться как строка постоянной длины. Переменные такого типа могут свободно использоваться в любых строковых выражениях. При этом компилятор автоматически преобразует такой массив в строку, длина которой равна количеству элементов массива. Массивы типа char можно сравнивать друг с другом и обращаться с ними почти так же, как с переменными типа string. Можно в операторе присваивания в левой части указывать имя такого массива, а в правой - строковую константу с длиной, равной количеству элементов в массиве. Кроме того, массивам типа array of char разрешено присваивать строковые константы, длина которых меньше количества элементов массива; в оставшиеся при этом незаполненные элементы заносится символ #0. Однако нельзя переменной типа array of char присвоить значение строковой переменной или строкового выражения (кроме выражений над строковыми константами с результирующей длиной,равнойразмерности массива). Массивы типа array of char могут использоваться в процедуре val и функциях concat, copy и length.
var
s: string;
i, id, len, max, count: byte;
begin
readln(s);
len := length(s);
max := 0;
id := 0;
count := 0;
for i:=1 to len do
if s[i] <> ' ' then
count := count + 1
else begin
if count > max then begin
max := count;
id := i - count;
end;
count := 0
end;
if count > max then begin // for last word
max := count;
id := i - count;
end;
for i:=id to id+max do
if s[i] = 'a' then
s[i] := 'b'; writeln(s);
Во введенной строке удалить пробелы между первым и вторым вопросительным знаком.
var
str: string;
q1, q2, l, i: byte;
begin
readln(str);
l := length(str);
q1 := 0; q2 := 0;
for i:=1 to l do
if str[i] = '?' then begin
q1 := i;
break;
end;
for i:=q1+1 to l do
if str[i] = '?' then begin
q2 := i;
break;
end;
if (q1 <> 0) and (q2 <> 0) then begin
q1 := q1 + 1;
while q1 < q2 do
if str[q1] = ' ' then begin
delete(str,q1,1);
q2 := q2-1;
end
else
q1 := q1 + 1;
writeln(str);

Download 29.77 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling