Лабораторная работа №2 Программирование задач обработки одномерных массивов: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
 
(не показана 1 промежуточная версия этого же участника)
Строка 57: Строка 57:
 
       z:=mas[j];
 
       z:=mas[j];
 
       mas[j]:=mas[j+1];
 
       mas[j]:=mas[j+1];
       mas[j+1]:=mas[j];
+
       mas[j+1]:=z;
 
     end;
 
     end;
 
  for i:=1 to 6 do  Write(mas[i],' ');
 
  for i:=1 to 6 do  Write(mas[i],' ');

Текущая версия на 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. Определить индекс последнего максимума в заданном массиве. Массив содержит повторяющиеся элементы.