Лабораторная работа №2 Программирование задач обработки одномерных массивов: различия между версиями
(Новая: ==Теоретические сведения== Последовательность индексированных данных одного типа, упорядоченных по и...) |
|||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 4: | Строка 4: | ||
==Примеры== | ==Примеры== | ||
− | + | ===Удалить из заданного массива элемент с заданным номером.=== | |
− | Program Ud; | + | Program Ud; |
− | Const n=5; {Задаём размерность массива} | + | Const n=5; {Задаём размерность массива} |
− | Type | + | Type |
Arr=array[1..n] of integer; {Объявление типа - массив} | Arr=array[1..n] of integer; {Объявление типа - массив} | ||
− | Var | + | Var |
Mass:Arr; {Объявление переменной типа массив} | Mass:Arr; {Объявление переменной типа массив} | ||
i,k: byte; | i,k: byte; | ||
− | Begin | + | Begin |
− | { Ввод массива в цикле} | + | { Ввод массива в цикле} |
For i:=1 to n do | For i:=1 to n do | ||
Begin | Begin | ||
Строка 27: | Строка 27: | ||
End. | End. | ||
− | + | ===Сортировка массива по убыванию методом выбора.=== | |
− | Program Sort1; | + | Program Sort1; |
− | const mas: array [1..6] of byte=(5,2,7,3,8,4); {Объявление типизированной переменной - массива} | + | const mas: array [1..6] of byte=(5,2,7,3,8,4); {Объявление типизированной переменной - массива} |
− | var i, j, imax, temp: integer; | + | var i, j, imax, temp: integer; |
− | begin | + | begin |
for i:=1 to 6 do {Цикл перестановок элементов массива} | for i:=1 to 6 do {Цикл перестановок элементов массива} | ||
begin | begin | ||
Строка 44: | Строка 44: | ||
for i:=1 to 6 do Write(mas[i],' '); {Вывод упорядоченного массива} | for i:=1 to 6 do Write(mas[i],' '); {Вывод упорядоченного массива} | ||
readln | readln | ||
− | end. | + | end. |
− | + | ===Сортировка массива по возрастанию методом обмена.=== | |
− | Program Sort2; | + | Program Sort2; |
− | const mas: array [1..6] of byte=(5,2,7,3,8,4); | + | const mas: array [1..6] of byte=(5,2,7,3,8,4); |
− | var i, j, z:integer; | + | var i, j, z:integer; |
− | begin | + | begin |
for i:=1 to 5 do {Внешний цикл - проход по массиву} | for i:=1 to 5 do {Внешний цикл - проход по массиву} | ||
for j:=i to 6-i do{Внутренний цикл - сравнение и перестановка элементов} | for j:=i to 6-i do{Внутренний цикл - сравнение и перестановка элементов} | ||
Строка 57: | Строка 57: | ||
z:=mas[j]; | z:=mas[j]; | ||
mas[j]:=mas[j+1]; | mas[j]:=mas[j+1]; | ||
− | mas[j+1]:= | + | mas[j+1]:=z; |
end; | end; | ||
− | for i:=1 to 6 do Write(mas[i],' '); | + | for i:=1 to 6 do Write(mas[i],' '); |
− | readln | + | readln |
− | end. | + | end. |
==Задания== | ==Задания== | ||
− | Составьте блок-схемы и программы к следующим задачам: | + | Составьте блок-схемы и программы к следующим задачам: |
===Вариант 1.=== | ===Вариант 1.=== | ||
1. Удалить первый отрицательный элемент массива. | 1. Удалить первый отрицательный элемент массива. | ||
+ | |||
2. Заданы два массива - массив аргументов и массив значений некоторой функции. Отсортировать массив значений функции по возрастанию значений аргумента. | 2. Заданы два массива - массив аргументов и массив значений некоторой функции. Отсортировать массив значений функции по возрастанию значений аргумента. | ||
===Вариант 2.=== | ===Вариант 2.=== | ||
1. Удалить первый элемент массива. | 1. Удалить первый элемент массива. | ||
+ | |||
2. Отсортировать в массиве элементы с нечетными индексами по убыванию. | 2. Отсортировать в массиве элементы с нечетными индексами по убыванию. | ||
===Вариант 3.=== | ===Вариант 3.=== | ||
1. Удалить все отрицательные элементы массива. | 1. Удалить все отрицательные элементы массива. | ||
+ | |||
2. Заданы два отсортированных по убыванию массива одинаковой размерности. Образовать третий массив, отсортированный по убыванию, состоящий из элементов заданных массивов. | 2. Заданы два отсортированных по убыванию массива одинаковой размерности. Образовать третий массив, отсортированный по убыванию, состоящий из элементов заданных массивов. | ||
===Вариант 4.=== | ===Вариант 4.=== | ||
1. Вставить заданное число перед каждым нечетным элементом массива. | 1. Вставить заданное число перед каждым нечетным элементом массива. | ||
+ | |||
2. Задан массив размерности 12. Отсортировать элементы первой половины массива по убыванию, а второй по возрастанию. | 2. Задан массив размерности 12. Отсортировать элементы первой половины массива по убыванию, а второй по возрастанию. | ||
===Вариант 5.=== | ===Вариант 5.=== | ||
1. Вставить заданное число перед каждым четным элементом массива. | 1. Вставить заданное число перед каждым четным элементом массива. | ||
+ | |||
2. Заданы два массива одинаковой размерности. В первом массиве хранятся номера домов, во втором количество жильцов в каждом доме. Отсортировать номера домов по возрастанию количества жильцов. | 2. Заданы два массива одинаковой размерности. В первом массиве хранятся номера домов, во втором количество жильцов в каждом доме. Отсортировать номера домов по возрастанию количества жильцов. | ||
===Вариант 6.=== | ===Вариант 6.=== | ||
1. Вставить 0 перед каждым четным элементом массива. | 1. Вставить 0 перед каждым четным элементом массива. | ||
+ | |||
2. Задан массив. Отсортировать элементы с четными индексами по возрастанию, а остальные по убыванию. | 2. Задан массив. Отсортировать элементы с четными индексами по возрастанию, а остальные по убыванию. | ||
===Вариант 7.=== | ===Вариант 7.=== | ||
1. Удалить те элементы массива, которые имеют нечетные индексы. | 1. Удалить те элементы массива, которые имеют нечетные индексы. | ||
+ | |||
2. Заданы два массива одинаковой размерности. Отсортировать элементы каждого массива по убыванию методом выбора, используя для этого только один цикл. | 2. Заданы два массива одинаковой размерности. Отсортировать элементы каждого массива по убыванию методом выбора, используя для этого только один цикл. | ||
===Вариант 8.=== | ===Вариант 8.=== | ||
1. Удалить все элементы массива, значения которых больше введенного числа. | 1. Удалить все элементы массива, значения которых больше введенного числа. | ||
+ | |||
2. Заданы два массива одинаковой размерности. Отсортировать элементы каждого массива по возрастанию методом обмена, используя для этого только один цикл. | 2. Заданы два массива одинаковой размерности. Отсортировать элементы каждого массива по возрастанию методом обмена, используя для этого только один цикл. | ||
===Вариант 9.=== | ===Вариант 9.=== | ||
1. Удалить элементы массива, значения которых меньше введенного числа. | 1. Удалить элементы массива, значения которых меньше введенного числа. | ||
+ | |||
2. Заданы два массива одинаковой размерности. В первом массиве хранятся номера домов, во втором количество жильцов в каждом доме. Отсортировать номера домов по возрастанию значений элементов второго массива. | 2. Заданы два массива одинаковой размерности. В первом массиве хранятся номера домов, во втором количество жильцов в каждом доме. Отсортировать номера домов по возрастанию значений элементов второго массива. | ||
===Вариант 10.=== | ===Вариант 10.=== | ||
1. Удалить наибольший и наименьший элементы массива. Массив не содержит повторяющихся элементов. | 1. Удалить наибольший и наименьший элементы массива. Массив не содержит повторяющихся элементов. | ||
+ | |||
2. Определить индекс последнего максимума в заданном массиве. Массив содержит повторяющиеся элементы. | 2. Определить индекс последнего максимума в заданном массиве. Массив содержит повторяющиеся элементы. |
Текущая версия на 08:54, 7 марта 2008
Содержание
Теоретические сведения
Последовательность индексированных данных одного типа, упорядоченных по индексам называется массивом данных. Доступ к данным типа массив осуществляется по индексам элементов. Элементы одномерных массивов имеют один индекс. Следующие программы, содержат примеры обработки данных, организованных в одномерный массив:
Примеры
Удалить из заданного массива элемент с заданным номером.
Program Ud; Const n=5; {Задаём размерность массива} Type Arr=array[1..n] of integer; {Объявление типа - массив} Var Mass:Arr; {Объявление переменной типа массив} i,k: byte; Begin { Ввод массива в цикле} For i:=1 to n do Begin Write('Введи элемент массива: '); ReadLn(Mass[i]); End; WriteLn; Write('Введи индекс удаляемого элемента: '); ReadLn(k); For i:=k to n-1 do Mass[i]:=Mass[i+1]; {Сдвиг элементов на один влево, то есть, удаление k-ого элемента} Mass[n]:=0; {Последний элемент зануляем} For i:=1 to n do Write(Mass[i]:4); {Вывод массива} ReadLn End.
Сортировка массива по убыванию методом выбора.
Program Sort1; const mas: array [1..6] of byte=(5,2,7,3,8,4); {Объявление типизированной переменной - массива} var i, j, imax, temp: integer; begin for i:=1 to 6 do {Цикл перестановок элементов массива} begin imax:=i; for j:=i to 6 do if mas[j]>mass[imax] then imax:=j; {Цикл определения imax - индекса наибольшего элемента массива} {Перестановка наибольшего элемента и первого среди неупорядоченных} temp:=mas[imax]; mas[imax]:=mas[i]; mas[i]:=temp; end; for i:=1 to 6 do Write(mas[i],' '); {Вывод упорядоченного массива} readln end.
Сортировка массива по возрастанию методом обмена.
Program Sort2; const mas: array [1..6] of byte=(5,2,7,3,8,4); var i, j, z:integer; begin for i:=1 to 5 do {Внешний цикл - проход по массиву} for j:=i to 6-i do{Внутренний цикл - сравнение и перестановка элементов} if mas[j]>mas[j+1] then begin z:=mas[j]; mas[j]:=mas[j+1]; mas[j+1]:=z; end; for i:=1 to 6 do Write(mas[i],' '); readln end.
Задания
Составьте блок-схемы и программы к следующим задачам:
Вариант 1.
1. Удалить первый отрицательный элемент массива.
2. Заданы два массива - массив аргументов и массив значений некоторой функции. Отсортировать массив значений функции по возрастанию значений аргумента.
Вариант 2.
1. Удалить первый элемент массива.
2. Отсортировать в массиве элементы с нечетными индексами по убыванию.
Вариант 3.
1. Удалить все отрицательные элементы массива.
2. Заданы два отсортированных по убыванию массива одинаковой размерности. Образовать третий массив, отсортированный по убыванию, состоящий из элементов заданных массивов.
Вариант 4.
1. Вставить заданное число перед каждым нечетным элементом массива.
2. Задан массив размерности 12. Отсортировать элементы первой половины массива по убыванию, а второй по возрастанию.
Вариант 5.
1. Вставить заданное число перед каждым четным элементом массива.
2. Заданы два массива одинаковой размерности. В первом массиве хранятся номера домов, во втором количество жильцов в каждом доме. Отсортировать номера домов по возрастанию количества жильцов.
Вариант 6.
1. Вставить 0 перед каждым четным элементом массива.
2. Задан массив. Отсортировать элементы с четными индексами по возрастанию, а остальные по убыванию.
Вариант 7.
1. Удалить те элементы массива, которые имеют нечетные индексы.
2. Заданы два массива одинаковой размерности. Отсортировать элементы каждого массива по убыванию методом выбора, используя для этого только один цикл.
Вариант 8.
1. Удалить все элементы массива, значения которых больше введенного числа.
2. Заданы два массива одинаковой размерности. Отсортировать элементы каждого массива по возрастанию методом обмена, используя для этого только один цикл.
Вариант 9.
1. Удалить элементы массива, значения которых меньше введенного числа.
2. Заданы два массива одинаковой размерности. В первом массиве хранятся номера домов, во втором количество жильцов в каждом доме. Отсортировать номера домов по возрастанию значений элементов второго массива.
Вариант 10.
1. Удалить наибольший и наименьший элементы массива. Массив не содержит повторяющихся элементов.
2. Определить индекс последнего максимума в заданном массиве. Массив содержит повторяющиеся элементы.