Лабораторная работа № 3. «Массивы» — КиберПедия 

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

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

Лабораторная работа № 3. «Массивы»

2021-04-18 336
Лабораторная работа № 3. «Массивы» 0.00 из 5.00 0 оценок
Заказать работу

Цель работы: научиться правильно описывать различные массивы, уметь инициализировать массивы, распечатывать содержимое массива; научится решать задачи на использование массивов.

Общие сведения.

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

Перед выполнением работы необходимо изучить правила описания и использования переменных типа массив, типизированных констант типа массив [1–7].

 

Пример 3.1. В одномерном массиве, состоящем из n целых элементов из диапазона , определить количество элементов между первым, кратным 10 и предпоследним четным.

Этапы решения задачи

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

 

2. Составим блок-схему задачи (рис.6)

 

3. Программа

Program example1;

var a: array [1..20] of integer;

i,k,d,L,R, n, p1,p2:byte;

Begin

writeln('Программа определяет количество элементов > 0 между первым кратным 10 и предпоследним четным');

write('Введите n, n<=20: ');read(n);

//Инициализация массива

// и определение позиции первого кратного 10

d:=0;

for i:=1 to n do begin

a[i]:=random(30)-10;

write(a[i]:4);

if a[i] mod 10 =0 then begin

     inc(d);

     if d=1 then p1:=i; end;

end;

// определение позиции предпоследнего четного

d:=0;

for i:=n downto 1 do

if not odd(a[i]) then begin

     inc(d);

     if d=2 then p2:=i; end;

//определение левой и правой границы просмотра

if p1<p2 then begin L:= p1; R:= p2; end

       else begin L:= p2; R:= p1; end;

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

k:=0;

for i:=L+1 to R-1 do if a[i]>0 then inc(k);

writeln;

writeln('Кол-во полож. эл. = ', k);

writeln('Нажмите ENTER для продолжения ');

readln;

end.

 

Рис. 6 – Блок-схема к задаче примера 3.1

 

 

Пример 3.2. Отсортировать заданный массив по возрастанию методом выбора.

Этапы решения задачи.

1. Алгоритм состоит в том, что выбирается наименьший элемент массива и меняется местами с первым, затем рассматриваются элементы, начиная со второго, и наименьший из них меняется местами со вторым, и так далее n-1 раз (при последнем проходе цикла при необходимости меняются местами предпоследний и последний элементы массива).

2. Составим блок-схему задачи

 

Рис. 7 – Блок-схема задачи примера 3.2

 

 

3. Программа

 

program example2;

var a: array [1..20] of integer;

i,j,t,imin,n:integer;

Begin

writeln('Программа сортирует массив по возрастанию методом выбора');

write('Введите n, n<=20: ');read(n);

//Инициализация массива

for i:=1 to n do

Begin

a[i]:=random(30)-10;

write(a[i]:4);

end;

 //Cортировка

for i:=1 to n-1 do

Begin

imin:= i;

for j:=i+1 to n do

  if a[j]<a[imin] then imin:=j;

t:= a[i];

a[i]:=a[imin];

a[imin]:=t;

end;

//Вывод отсортированного массива

writeln;

for i:=1 to n do write(a[i]:4);

writeln;

writeln('Нажмите ENTER для продолжения ');

readln;

end.

 

Пример 3.3. В целочисленной матрице найти номера строк, в которых все элементы больше 10.

Решение задач на матрицы несколько отличается от одномерных массивов, так как матрица есть массив из массивов.

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

 

Этапы решения задачи

1. Для каждой строки определить переменную-признак того, все ли элементы строки превышают значение 10. Далее в строке осуществляется поиск элементов, не удовлетворяющих условию задачи (т.е. меньших 10). Если найдено хотя бы одно такое число, то переменная-признак меняет свое значение (например, с 0 на 1). Затем для каждой строки проверяется значение указанной переменной, и если оно не изменилось, то в строке – все элементы > 10.

 

2. Составим блок-схему задачи (рис 8)

3. Программа

 

Program example3;

var a: array [1..20,1..20] of integer;

i,j,n,m,Flag, T: byte;

Begin

writeln('Программа находит номера строк, в которых все элементы > 10');

write('Введите N, N<=20 '); Read(n);

write('Введите M, M<=20 '); Read(m);

randomize;

//Инициализация массива

for i:=1 to n do

for j:=1 to m do   begin

   a[i,j]:=random(40)-20;

   if j=m then writeln(a[i,j]:4) else write(a[i,j]:4);

end;

writeln;

//поиск строк, в к-х все элементы > 10

T:=0; //признак того, есть ли такие строки в матрице

for i:=1 to n do

Begin

Flag:= 0;//признак того, что в строке все элементы >10

for j:=1 to m do

   if a[i,j]<=10 then begin Flag:= 1;break; end;

if Flag=0 then begin write(i:3);T:=1; end;

end;

if T = 0 then write('Таких строк нет');

writeln;

writeln('Для продолжения нажмите ENTER');

readln;

end.

 

Рис. 8 – Блок-схема к задаче примера 3.3

 

 

Пример 3.4. Дана целочисленная матрица порядка N. Отсортировать строки матрицы по возрастанию количества элементов больших элементов главной диагонали.

 

Этапы решения задачи

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

 

2. Составим блок-схему задачи (рис 9)

 

 

Рис. 9 – Блок-схема к задаче примера 3.4

 

 

3. Программа

Program Example4;

var a: array [1..20,1..20] of integer;

b: array [1..20] of integer;

i,j,n, imin: byte;

temp:integer;

 

Begin

writeln('Программа сортирует строки матрицы по возраст кол-ва эл > эл главной диагонали');

write('Введите N, N<=20 '); Read(n);

randomize;

//Инициализация массива

for i:=1 to n do

for j:=1 to n do

   a[i,j]:=random(40)-20;

writeln;

 

//поиск количества элементов больших элементов глав диагонали

for i:=1 to n do

Begin

b[i]:=0;

for j:=1 to n do

Begin

  if a[i,j]>a[i,i] then inc(b[i]);

  if j=n then writeln(a[i,j]:4,b[i]:8) else write(a[i,j]:4);

end;

end;

//============сортировка строк======================

for i:=1 to n-1 do

Begin

imin:= i;

for j:=i+1 to n do

   if b[j]< b[imin] then imin:=j;

temp:= b[i];

b[i]:=b[imin];

b[imin]:=temp;

for j:=1 to n do

   begin

     temp:=a[i,j];

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

     a[imin,j]:=temp;

   end;

end;

writeln('Распечатка отсортированного массива ');

for i:=1 to n do

for j:=1 to n do

if j=n then writeln(a[i,j]:4, b[i]:8) else write(a[i,j]:4);

writeln;

writeln('Для продолжения нажмите ENTER');

readln;

end.

 

 

Пример 3.5.  Дана целочисленная прямоугольная матрица. Удалить те строки матрицы, в которых минимальное количество четных элементов.

 

Этапы решения задачи.

1. Решение задачи состоит в следующем: требуется найти количество четных элементов в каждой строке и определить наименьшее из них. Затем все строки, в которых количество четных минимально последовательно передвигать в конец матрицы (например, 1-ую такую строку последовательно передвинуть на последнюю, 2-ю – на предпоследнюю, и т.д.). При этом уменьшать и общее количество строк. При удалении строки, необходимо просматривать всю матрицу заново, начиная с первой строки. Замечание: следует отметить, что физически строки не удаляются, но в результирующей матрице они не должны отображаться.

 

2. Составим блок-схему задачи (рис 10)

 

3. Программа

Program Example1;

var a: array [1..20,1..20] of integer;

chet: array [1..20] of integer;

i,j,n,m, k,min_chet: byte;

temp:integer;

Begin

writeln('Программа удаляет строки, в которых наименьшее кол-во четных.');

write('Введите N, N<=20 '); Read(n);

write('Введите M, M<=20 '); Read(m);

randomize;

//Инициализация массива

min_chet:= m;//максимально возможное кол-во четных элементов в строке

for i:=1 to n do begin

chet[i]:=0;

for j:=1 to m do begin

    a[i,j]:=random(40)-20;

    if not odd(a[i,j]) then inc(chet[i]);

    if j=m then writeln(a[i,j]:4,chet[i]:8)

           else write(a[i,j]:4);

  end;

//определение миним кол-ва четных в строке

if chet[i] < min_chet then min_chet:= chet[i];

end;

writeln;

//удаление строк, в которых кол-во четных = min_chet

i:=0;

while i < n do begin

inc(i);

if chet[i]=min_chet then begin

for k:=i to n-1 do   begin

    for j:=1 to m do   begin

       temp:= a[k,j];

       a[k,j]:= a[k+1,j];

       a[k+1,j]:=temp;

      end;

    temp:=chet[k]; chet[k]:=chet[k+1]; chet[k+1]:=temp;

  end;

n:=n-1;i:=0; end;

end;

  writeln('Распечатка результирующего массива ');

for i:=1 to n do

for j:=1 to m do

if j=m then writeln(a[i,j]:4, chet[i]:8)

      else write(a[i,j]:4);

writeln('Для продолжения нажмите ENTER');readln;readln;

end.

 

 

Рис. 10 – Блок-схема задачи примера 3.5

 

 

Задания

Вариант 1

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

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

2) произведение элементов массива, расположенных между максимальным и минимальными элементами.

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

2. Дана целочисленная прямоугольная матрица. Определить:

1) количество строк, не содержащих ни одного нулевого элемента;

2) максимальное из чисел, встречающихся в заданной матрице более одного раза.

Вариант 2

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

1) сумму положительных, кратных 5 элементов массива;

2) произведение элементов массива, расположенных между максимальным кратным 10 и минимальным четным элементами.

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

2. Дана целочисленная прямоугольная матрица.

1) определить номера столбцов, в которых нет четных элементов;

2) переставить строки матрицы по возрастанию сумм положительных элементов.

Вариант 3

1. В одномерном массиве, состоящем из n целых элементов, вычислить:

1) произведение элементов массива с четными номерами;

2) сумму элементов массива, расположенных между первым и последним нулевыми элементами.

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, потом – все отрицательные (элементы, равные 0, считать положительными).

2. Дана целочисленная прямоугольная матрица.

1) произведение элементов в строках, в которых более трех положительных элементов;

2) номер строки, в которой находится самая длинная серия одинаковых элементов.

Вариант 4

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

1) среднее арифметическое отрицательных нечетных элементов массива;

2) сумму элементов массива, расположенных за вторым нечетным положительным элементом.

Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Новый массив не заводить.

2. Дана целочисленная прямоугольная матрица.

1) отсортировать столбцы матрицы по убыванию количества элементов меньших элементов побочной диагонали;

2) определить минимальный из максимальных элементов строк и его положение.

Вариант 5

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

1) максимальный кратный 10 элемент массива; и его номер.

2)сумму элементов массива, расположенных до последнего положительного элемента.

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [ a, b ]. Новый массив не заводить.

2. Дана целочисленная квадратная матрица.

1) определите, имеется ли среди элементов, расположенных ниже ее главной и побочной диагоналей хотя бы одно составное двузначное число;

2) отсортировать столбцы матрицы по убыванию количества элементов кратных 3.

Вариант 6

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

1) второй (по величине) минимальный положительный нечетный элемент и его позицию;

2) среднее арифметическое элементов массива, расположенных за последним максимальным по модулю элементом.

Преобразовать массив таким образом, чтобы сначала располагались все элементы равные нулю, а потом – все остальные.

2. Дана целочисленная квадратная матрица.

1) определить положение всех седловых точек матрицы и их количество (седловая точка – это элемент матрицы, минимальный в своей строке и максимальный в своем столбце);

2) переставить строки матрицы относительно побочной диагонали.

Вариант 7

1. В одномерном массиве, состоящем из n вещественных элементов:

1) определить каких элементов больше – положительных нечетных или отрицательных четных;

2) определить, все ли элементы массива простые числа.

Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине – элементы, стоявшие в четных позициях.

2. Дана целочисленная квадратная матрица.

1) определить произведение элементов в тех столбцах, в которых четных элементов на один больше, чем нечетных.

2) найти такие k, что k -я строка матрицы совпадает с k -м столбцом.

Вариант 8

1. В одномерном массиве, состоящем из n вещественных элементов:

1) определить какие числа встречаются в нем более двух раз;

2) вывести на экран элементы массива, большие среднего арифметического.

Сжать массив, удалив из него все нули.

2. Дана целочисленная квадратная матрица.

1) удалить из матрицы строки, в которых все элементы четные;

2) вычислить среднее арифметическое элементов, расположенных ниже побочной и выше главной диагоналей.

Вариант 9

1. В одномерном массиве, состоящем из n вещественных элементов:

1) определить есть ли в массиве хотя бы одно положительное меньшее минимального четного элемента;

2) вычислить сумму элементов массива, расположенных между последним и предпоследним нечетными элементами.

Преобразовать массив таким образом, чтобы в первой его половине располагались элементы по возрастанию, во второй – по убыванию.

2. Дана целочисленная квадратная матрица.

1) Сжать матрицу, удалив из нее те столбцы, в которых количество отрицательных совпадает с количеством положительных;

2) Определить количество строк, в которых расположены максимальные элементы матрицы.

Вариант 10

1. В одномерном массиве, состоящем из n вещественных элементов:

1) определить является ли массив палиндромом;

2) вычислить сумму модулей элементов массива, расположенных после первого элемента, равного нулю.

Преобразовать массив таким образом, чтобы сначала располагались элементы, кратные 5, затем 4, после 3. Остальные – в конце.

2. Дана целочисленная квадратная матрица.

1) Элементы строки с четными номерами циклически сдвинуть влево на количество элементов, равное номеру строки, а элементы нечетных строк – вправо.

2) Вывести элементы матрицы, которые больше среднего арифметического всех элементов. Сохранить порядок следования элементов в матрице.

Вариант 11

1. В одномерном массиве, состоящем из n вещественных элементов:

1) положительные элементы уменьшить вдвое, а отрицательные заменить на значения их индексов;

2) определить число соседств двух положительных чисел.

Преобразовать массив следующим образом: удалить все нечетные элементы, остальные упорядочить массив по возрастанию.

2. Дана целочисленная квадратная матрица.

1) Определить превышают ли все элементы выше главной диагонали, элементы, расположенные ниже ее симметрично (т.е. Aij сравнивается с Aji).

2) удалить строки матрицы, в которых есть хотя бы один нулевой элемент.

Вариант 12

1. В одномерном массиве, состоящем из n вещественных элементов:

1) вывести все четные кратные 5 и 4, расположенные между максимальным и минимальным нечетными элементами;

2) вычислить сумму элементов массива и каждый элемент равный нулю увеличить на 20.

Массив отсортировать по возрастанию модулей элементов.

2. Дана квадратная целочисленная матрица.

1) Определить количество локальных минимумов матрицы (локальный минимум – элемент матрицы, строго меньший всех своих соседей).

2) Найти столбец, содержащий минимальное количество положительных кратных 5 элементов.

Вариант 13

1. В одномерном массиве, состоящем из n вещественных элементов:

1) вычислить количество элементов массива, которые больше своих соседей;

2) вычислить: .

Преобразовать массив следующим образом: все отрицательные увеличить до нуля и отсортировать полученный массив по возрастанию.

2. Дана целочисленная квадратная матрица.

1) для каждой строки определить количество отрицательных элементов, с которых она начинается;

2) определить количество строк, отсортированных по возрастанию.

Вариант 14

1. В одномерном массиве, состоящем из n вещественных элементов:

1) поменять местами второй отрицательный с последним положительным элементами;

2) вычислить сумму квадратов всех элементов заданного массива, за исключением элементов, кратных пяти.

Осуществить циклический сдвиг элементов массива влево на одну позицию.

2. Дана целочисленная прямоугольная матрица.

1) найти номера строк, в которых на всех нечетных позициях стоят нули;

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

Вариант 15

1. В одномерном массиве, состоящем из n вещественных элементов:

1) заменить нулями все отрицательные элементы, предшествующие первому по порядку максимальному элементу;

2) Получить массив B(n), i -й элемент которого равен среднему арифметическому первых i элементов массива А:

Осуществить циклический сдвиг элементов массива влево на две позиции.

2. Дана целочисленная прямоугольная матрица.

1) определить максимальное из чисел, встречающееся в ней более одного раза;

2) вывести номера строк, в которых 0 и 1 чередуются.

Вариант 16

1. В одномерном массиве, состоящем из n целых элементов:

1) определить, имеются ли в заданном массиве три подряд идущих элемента одного знака;

2) Найдите сумму первых из них (считая слева направо), произведение которых не превышает заданного числа М

Осуществить циклический сдвиг элементов массива вправо на одну позицию.

2. Дана целочисленная квадратная матрица.

1) в каждой строке определить наибольшее простое число, если в строке нет простых чисел, выдавать соответствующее сообщение;

2) переставить элементы матрицы относительно середины по горизонтали.

Вариант 17

1. В одномерном массиве, состоящем из n целых элементов:

1) каждый положительный элемент уменьшить на его порядковый номер (среди положительных);

2) вычислить произведение нечетных элементов, расположенных на четных местах.

Осуществить циклический сдвиг элементов массива вправо на две позиции.

2. Дана целочисленная квадратная матрица.

1) определить количество «особых» элементов матрицы и их количество (особым называется элемент, которых больше всех элементов слева от него, и меньше всех элементов справа);

2) определить номер столбца, в котором наибольшее количество четных элементов не кратных 3.

Вариант 18

1. В одномерном массиве, состоящем из n целых элементов:

1) вычислить среднее геометрическое чисел кратных 5, но не кратных 4;

2) Получите новый массив, в котором все элементы исходного массива встречаются только один раз.

Осуществить циклический сдвиг элементов массива вправо на k позиций.

2. Дана целочисленная квадратная матрица.

1) определить отсортированы ли столбцы матрицы по возрастанию суммы элементов в них;

2) транспонировать заданную матрицу. Дополнительного массива не заводить.

Вариант 19

1. В одномерном массиве, состоящем из n целых элементов:

1) определить, образует ли он возрастающую последовательность;

2) вывести те элементы массива, индексы которых являются степенями двойки (1,2,4,8,16,…)

Преобразовать элементы массива следующим образом: i -й элемент после преобразования равен наибольшему среди первых i элементов.

2. Дана целочисленная квадратная матрица.

1) вывести на экран строку матрицы, в которой встречается наибольшее количество нечетных элементов;

2) определить, симметрична ли матрица относительно главной диагонали.

Вариант 20

1. В одномерном массиве, состоящем из n целых элементов:

1) определить, расположены ли его четные элементы в порядке возрастания;

2) определить число соседств простого и четного элементов массива

Преобразовать массив следующим образом: положительные кратные трем числа расположить в порядке возрастания в конце массива.

2. Дана целочисленная квадратная матрица.

1) переставить ее строки и столбцы таким образом, чтобы максимальный элемент оказался в левом верхнем углу, второй максимальный – во второй строке на главной диагонали, и т.д.

2) удалить из матрицы строки, в которых все элементы положительные.

Контрольные вопросы

1. Каким образом определяются переменные типа массив (одномерный и двумерный)?

2. Как осуществляется доступ к отдельному элементу одномерного и двумерного массива?

3. Каким образом выводятся элементы массива на экран?

4. Приведите пример фрагмента программы, который выводит на экран двумерный массив в виде матрицы.

5. Сколько чисел можно записать в шестимерный массив X: Array[0..1, 0..1, 0..1, 0..1, 0..1, 0..1] of Integer?


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

 

 

1. Архангельский А. Я. Язык Pascal и основы программирования в Delphi. Учебное пособие. Бином-Пресс, 2004.- 496 с.

2. Глинский Я. Н., Анохин В. Е., Ряжская В. А. Turbo Pascal 7.0 и Delphi. Учебное пособие. – СПб: ООО «ДиаСофтЮП», 2003.-208 с.

3. Моргун А. Н., Кривель И. А. Программирование на языке Паскаль. Основы обработки структур данных, М.: Вильямс, 2006.-328 с.

4. Окулов С.М. Основы программирования – М.: ЮНИМЕДИАСТАЙЛ, 2002.-453с.

5. Павловская Т. А. Паскаль. Программирование на языке высокого уровня. Учебник. – СПб.: Изд-во «Питер», 2003.- 400 с.

6. Павловская Т. А. Паскаль. Программирование на языке высокого уровня. Практикум. – СПб.: Изд-во «Питер», 2006.-320 с.

7. Фаронов В.В. Delphi. Программирование на языке высокого уровня. Учебник для вузов. – СПб.: Изд-во «Питер», 2003.- 640 с.

 

 


Приложение

 

Пример оформления отчета по лабораторной работе

 


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

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

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

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.194 с.