Лабораторная работа №2 Программирование задач обработки одномерных массивов: различия между версиями
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 47: | Строка 47: | ||
===Сортировка массива по возрастанию методом обмена.=== | ===Сортировка массива по возрастанию методом обмена.=== | ||
− | 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.=== |
Текущая версия на 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. Определить индекс последнего максимума в заданном массиве. Массив содержит повторяющиеся элементы.