Массивы в языке Паскаль

Автор работы: Пользователь скрыл имя, 26 Января 2011 в 21:26, курсовая работа

Описание работы

Тип данных Массив позволяет одному идентификатору задать несколько значений, которые отличаются порядковым номером. Номер элемента массива указывается после идентификатора в квадратных скобках {M[5] - пятый элемент массива М}. При описании массива указывается диапазон номеров элементов массива и тип, к которому относится каждый его элемент. Массивы могут быть одно-, двух- и многомерными.

Содержание работы

Введение
1. Виды массивов
1.1. Одномерные массивы
1.2. Примеры задач
1.3. Двумерные массивы
1.4. Примеры задач
2. Сортировка массивов
2.1Метод простых обменов (Пузырьковая сортировка)
2.2. Сортировка простым выбором
2.3 Сортировка простым включением (Метод вставки и сдвига)
3. Параметры-массивы и параметры-строки
Список литературы

Файлы: 1 файл

массивы.rtf

— 626.53 Кб (Скачать файл)

     begin

     if j<>k then

     {Проверка условия № столбца

     неравен № столбца,

     который необходимоудалить}

     begin

     b[i,j]:=a[i,j];

     {если да, то новому массиву

     присваиваем проверяемый элемент }

     end;

     end;

     for i:=1 to n do {вывод нового массива}

     for j:=1 to m do

     writeln ('b[',i,',',j,']=',b[i,j]);

     readln;

     end. 

     10. Дана вещественная матрица размерности n*m. Вывести номера столбцов, содержащих только отрицательные элементы. 

 

      program zadacha_10;

     uses crt;

     var

     a: array[1..50,1..50] of real;

     i,j: integer;

     n,m: integer;

     begin

     clrscr;

     write('введите кол-во строк ');

     readln(n);

     write('введите кол-во столбцов ');

     readln(m);

     for i:=1 to n do

     for j:=1 to m do

     begin

     write('a[',i,',',j,']= ');

     readln(a[i,j]);

     end;

     for j:=1 to m do

     begin

     if a[i,j]<0 then

     begin

     writeln ('номер столбца, в котором все элементы отрицательные= ', J);

     readln;

     end

     else

     begin

     writeln ('в столбце ',J,' нет отрицательных или не

     все отрицательные элементы ');

     end;

     end;

     readln;

     end. 

     11. В двумерном массиве найти минимальное число и определить в какой строке и каком столбце он находится. 

     program zadacha_11;

     uses crt;

     var

     a:array [1..50,1..50] of integer; {описание масива}

     i,j:integer; {переменные-счетчики}

     min: real; { минимальное число}

     n,m: integer; { кол-во строк, кол-во столбцов}

     begin {начало программы}

     clrscr;

     write('введите кол-во строк '); {ввод кол-ва строк}

     readln(n);

     write('введите кол-во столбцов '); {ввод кол-ва столбцов}

     readln(m);

     for i:=1 to n do

     for j:=1 to m do

     begin

     write('a[',i,',',j,']= '); { ввод элементов массива }

     readln(a[i,j]);

     end;

     min:=a[1,1];

     for i:=1 to n do

     for j:=1 to m do

     begin

     if a[i,j] < min then {поиск минимального числа}

     min:=a[i,j];

     end;

     for i:=1 to n do

     for j:=1 to m do

     begin

     if a[i,j]=min then

     begin

     writeln('минимальное число = ',min:5);

     {вывод минимального числа}

     writeln('номер элемента i=',i,',','j=',j);

     {вывод номера мин. чис-ла}

     end;

     end;

     readln;

     end. 

     12. Развернуть квадратную матрицу на 90 градусов по часовой стрелке. 

     program zadacha_12;

     uses crt;

     var

     a: array [1..30,1..30] of integer; {исходная матрица}

     b: array [1..30,1..30] of integer; {промежуточная матрица}

     c: array [1..30,1..30] of integer; {Матрица развёрнута на 90?}

     i,j: integer; {переменные счётчики}

     m,n: integer; {количество строк и столбцов}

     begin

     clrscr;

     write ('введите количество строк и столбцов ');

     readln (n);

     for i:=1 to n do {ввод элементов массива}

     for j:=1 to n do

     begin

     write ('a[',i,',',j,']=');

     readln (a[i,j]);

     end;

     for i:=1 to n do

     for j:=1 to n do

     begin

     b[i,j]:=a[n+1-i,j]; {промежуточной матрицы присваиваем

     элементы первоначальной матрицы по закону: первому элементу

     присваиваем строки последний, последнему первый, второму

     элементу предпоследний, предпоследнему второй и тд.}

     end;

     writeln ('Матрица развёрнута на 90?.');

     for i:=1 to n do

     for j:=1 to n do

     begin

     c[i,j]:=b[j,i]; {третьей матрице присваиваем

     элементы промежуточной по закону: первая строка

     становится первым столбцом и тд. }

     writeln ('c[',i,',',j,']=',c[i,j]); {печать массива развёрнутого на 90?}

     readln;

     end;

     end.

 

     2. Сортировка массивов

 

     Задача сортировки (упорядочения) элементов массива в соответствии с их значениями относится к классу классических задач, которые решались еще на первых е- mail -ах.

     В настоящее время разработано достаточно много различных методов сортировки. Одни из них относятся к методам простых сортировок. Другие к улучшенным. Однако до сегодняшнего момента задача разработки метода, сочетал бы в себе все лучшие качества остается открытой. Договоримся, что линейный массив, который необходимо упорядочить уже задан, т.е. описан и сгенерирован.

     Различают следующие типы сортировок:

     1) по возрастанию

     2) по убыванию

     3) по не убыванию

     4) по не возрастанию

     При рассмотрении каждого метода будем сортировать элементы по неубыванию.

     2.1 Метод простых обменов (Пузырьковая сортировка)

 

     Идея метода: Весь массив рассматривается несколько раз, причем при каждом рассмотрении сравниваются значения 2-х соседних элементов. Если они стоят в неправильном порядке, то производится их перестановка. Так происходит до тех пор, пока не будет выполнено ни одной перестановки. Метод называют пузырьковой сортировкой потому что меньшие значения элементов постепенно "всплывают", как пузырики воздуха в воде, перемещаясь в начало массива, а "тяжелые" элементы "оседают на дно". 

 

      7 0 -4 3 1 -2 5

     -4 7 0 -2 3 1 5

     -4 -2 7 0 1 3 5

     -4 -2 0 7 1 3 5

     -4 -2 0 1 7 3 5

     -4 -2 0 1 3 7 5

     -4 -2 0 1 3 5 5 

     Фрагмент:

     For i:=2 to n do

     For j:=n downto i do

     if v[j] <v[j-1] then

     begin

     x:=v[j];

     v[j]:=v[j-1];

     v[j-1]:=x;

     end;

     2.2 Сортировка простым выбором

 

     Идея метода: весь массив просматривается несколько раз и на каждом шаге ищется минимальный элемент и запоминается его порядковый номер. Затем найденный минимальный элемент меняется значением с первым, вторым, третьим и т.д. предпоследним элементом массива и исключается из рассмотрения 

     7 0 -4 3 1 -2 5

     -4 0 7 3 1 -2 5

     -4 -2 7 3 1 0 5

     -4 -2 0 3 1 7 5

     -4 -2 0 1 3 7 5

     -4 -2 0 1 3 5 7 

     For i:= to n do

     Begin

     min:=v[i];

     ind :=i;

     for j:= i to n-1 do

     if v[j]<min then

     bedin

     min:=v[j];

     ind:=j;

     end;

     x:=v[i];

     v[i]:=v[ind];

     v[ind]:=x;

     end;

     2.3 Сортировка простым включением (Метод вставки исдвига)

 

     Идея метода: делается предположение, что первые р элементов массива уже упорядочены и рассматривается р+1 элемент. Если окажется, что он меньше чем какой либо из первых р, то он занимает место большего, а участок массива ограниченный его новым местом и старым смещается в право. 

     7 0 -4 3 1 -2 5

     0 7 -4 3 1 -2 5

     -4 0 7 3 1 -2 5

     -4 0 3 7 1 -2 5

     -4 0 1 3 7 -2 5

     -4 -2 0 1 3 7 5

     -4 -2 0 1 3 5 7 

     For i:=2 to n do

     For j:=1 to i-1 do

     if v[i]<v[j] then

     begin

     x:=v[i];

     for h:=1 downto j+1 do

     v[h]:=i[h-1];

     v[j]:=x;

     end.

 

     3. Параметры - массивы и параметры - строки

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

Информация о работе Массивы в языке Паскаль