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

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Новая: ==Теоретические сведения== Последовательность индексированных данных одного типа, упорядоченных по и...)
 
Строка 4: Строка 4:
 
==Примеры==
 
==Примеры==
 
   
 
   
1. Удалить из заданного массива элемент с заданным номером.
+
===Удалить из заданного массива элемент с заданным номером.===
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.
  
2. Сортировка массива по убыванию методом выбора.
+
===Сортировка массива по убыванию методом выбора.===
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.
 
    
 
    
3.  Сортировка массива по возрастанию методом обмена.
+
===Сортировка массива по возрастанию методом обмена.===
 
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);
Строка 68: Строка 68:
 
===Вариант 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. Определить индекс последнего максимума в заданном массиве. Массив содержит повторяющиеся элементы.

Версия 07:06, 20 февраля 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]:=mas[j];
    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. Определить индекс последнего максимума в заданном массиве. Массив содержит повторяющиеся элементы.