Задание для индивидуальной работы Нечетные варианты задания выполнять модифицированным методом простого выбора, а четные - методом парных перестановок (метод пузырька). Вариант 1-2. Дана последовательность а1, а2, ... ,а20. Расположить положительные элементы последовательности, стоящие на нечетных местах по возрастанию. Вариант 3-4. Дана последовательность а1, а2, ... ,а15. Расположить ненулевые элементы последовательности по убыванию. Вариант 5-6. Дана последовательность а1, а2, ... ,а20. Элементы, стоящие на нечетных местах, расположить в порядке возрастания, а на - четных в порядке убывания. Вариант 7-8. Дана последовательность а1, а2, ... ,а15. Требуется упорядочить ее по возрастанию абсолютных значений элементов Вариант 9-10. Дана последовательность а1, а2, ... ,а20. Требуется расположить отрицательные элементы последовательности в порядке убывания. Вариант 11-12. Дана последовательность а1, а2, ... ,а20. Расположить положительные элементы последовательности по убыванию. Вариант 13-14. Дана последовательность а1, а2, ... ,а15. Расположить отрицательные элементы по возрастанию. Вариант 15-16. Дана последовательность а1, а2, ... ,а15. Расположить элементы на четных местах по убыванию. Вариант 17-18. Дана последовательность а1, а2, ... ,а15. Расположить четные элементы последовательности по возрастанию. Вариант 19-20. Дана последовательность а1, а2, ... ,а20. Расположить нечетные элементы последовательности по убыванию. Вариант 21-22. Дана последовательность а1, а2, ... ,а15. Расположить четные положительные элементы по возрастанию. Вариант 23-24. Дана последовательность а1, а2, ... ,а20. Расположить нечетные отрицательные элементы по убыванию. Вариант 25. Дана последовательность а1, а2, ... ,а20. Расположить отрицательные элементы последовательности, стоящие на четных местах по убыванию. Пример выполнения задания Имеется массив A, содержащий n элементов. Разместить элементы массивы в порядке возрастания их значений. При решении этой задачи воспользуемся сортировкой по методу пузырька. Суть этого метода состоит в организации упорядоченного списка элементов, в который на соответствующие им места добавляются один за другим неотсортированные элементы. На рис. 3.1 представлена схема описания алгоритма сортировки методом пузырька. Рис. 3.1. Схема алгоритма сортировки методом пузырька. Текст программы имеет следующий вид: {Цель: сортировка элементов одномерного массива в порядке } { возрастания их значений } {Метод: сортировка методом пузырька. } {Переменные:a-исходный массив } { n-количество элементов } { i,k-параметры циклов } { x-вспомогательная переменная } Program Sort; Const Nmax=100; var a: array [1..Nmax] of real; i, k, n: integer; x: real; Begin writeln('Задайте количество элементов массива'); Read(n); WriteLn('введите ', n, 'чисел'); for i:=1 to n do Read(a[i]); Writeln; {печать массива} Writeln('исходный массив:'); for i:=1 to n do Write(a[i]:7:2); Writeln; { сортировка массива} for i:=1 to n-1 do begin for k:=i downto 1 do if a[k]>a[k+1] then begin x:=a[k]; a[k]:=a[k+1]; a[k+1]:=x; end; end; {вывод результата} Writeln('отсортированный массив'); for i:=1 to n do Write(a[i]:7:2); Writeln; End. ИСПОЛЬЗОВАНИЕ ПРОЦЕДУР ДЛЯ ОБРАБОТКИ МАССИВОВ Подготовка к работе По указанной литературе и методическим указаниям к данной работе изучить порядок работы. Ответить на контрольные вопросы. 4.2. Контрольные вопросы 1. Что называется подпрограммой? В чём состоит сходство и различие подпрограмм-процедур и подпрограмм-функций в языке Турбо Паскаль? 2. В чём различие между стандартными и определёнными пользователем подпрограммами? 3. Опишите последовательность событий при вызове процедуры, функции? 4. В каких случаях в программе указывается директива компилятору{$I}? 5. Что называется параметром, и каково его назначение? Формальные, фактические параметры, их взаимосвязь. 6. Каковы отличия параметров-значений от параметров-переменных? Особенности их описания и применения. 7. Чем отличаются локальные и глобальные параметры? Какова область их действия? 8. Что такое рекурсия? Задание для индивидуальной работы Во всех вариантах заданий ввод исходных и вывод результирующих матриц производить с помощью соответствующих процедур. Вариант 1. Составить процедуру подсчета суммы значений элементов в одномерном массиве. С помощью этой процедуры подсчитать суммы элементов столбцов произвольно заданной двумерной матрицы А и вывести номер столбца с минимальной суммой. Вариант 2. Составить процедуру подсчета суммы значений элементов в одномерном массиве. С помощью этой процедуры подсчитать суммы элементов строкпроизвольно заданной двумерной матрицы и вывести номер строки с максимальной суммой. Вариант 3. Составить процедуру подсчета суммы значений элементов в одномерном массиве. С помощью этой процедуры подсчитать суммы элементов в главной и побочной диагоналях в произвольно заданной квадратной матрице В. Вывести сообщение, какая диагональ имеет максимальное значение. Вариант 4. Составить процедуру подсчета суммы значений элементов в одномерном массиве. С помощью этой процедуры подсчитать суммы элементов в главной и побочной диагоналях в произвольно заданной квадратной матрице В. Вывести сообщение, какая диагональ имеет минимальное значение. Вариант 5. Составить процедуру подсчета количества элементов одномерного массива, значения которых больше числа Р. Спомощью этой процедуры подсчитать количество элементов, больших Р в каждом столбце двумерной матрицы С. Вариант 6. Составить процедуру подсчета количества элементов одномерного массива, значения которых меньше числа Р. С помощью этой процедуры подсчитать количество элементов, меньших Р вкаждой строке двумерной матрицы С. Вариант 7. Составить процедуру определения максимального значения и его адреса в одномерном массиве. С помощью этой процедуры найти максимальные элементы в строках произвольно заданного двумерного массива и среди них найти максимальный, вывести номер строки, содержащей этот элемент. Вариант 8. Составить процедуру определения минимального значенияиего адреса в одномерном массиве. С помощью процедуры найти минимальные элементы в столбцах произвольно заданного двухмерного массива и среди них найти минимальный. Вывести номер столбца содержащего этот элемент. Вариант 9. Составить процедуру упорядочения одномерного массива по возрастанию. С помощью процедуры отсортировать столбцы произвольно заданной двумерной матрицы. При этом вновь полученные строки также должны быть отсортированы по возрастанию. Вариант 10. Составить процедуру упорядочения одномерного массива по убыванию. С помощью процедуры отсортировать столбцы произвольно заданной двумерной матрицы. При этом вновь полученные строки также должны быть отсортированы по убыванию. Вариант 11. Составить процедуру подсчета количества элементов одномерного массива А, значения которых лежат в пределах от p до q. С помощью этой процедуры подсчитать количество таких элементов дня каждой строки матрицы В. Вариант 12. Составить процедуру подсчета количества элементов одномерного массива А, значения которых лежат в пределах от p до q.С помощью этой процедуры подсчитать количество таких элементов для каждого столбца матрицы В. Вариант 13. Составить процедуру обнуления всех отрицательных элементов в одномерном массиве А[т]. С помощью этой процедуры обнулить все отрицательные элементы в n-й и k-й строке матрицы B[m,m], п <= т, k <= т.. Вариант 14. Составить процедуру обнуления всех положительных элементов в одномерном массиве А. Спомощью этой процедуры обнулить все положительные элементы в п-ми k-м столбце произвольной матрицы В. Вариант 15. Составить процедуру определения адресов одномерного массива, значения которых лежат в пределах от р до q.. С помощью этой процедуры определить и вывести на экран адреса соответствующих элементов в строках двумерной матрицы В. Вариант 16. Составить процедуру определения адресов одномерного массива, значения которых лежат в пределах от p до q. Спомощью этой процедуры определить и вывести на экран адреса соответствующих элементов в столбцах двумерной матрицы В. Вариант 17. Составить процедуру определения среднего арифметического значения элементов одномерного массива А: Используя эту процедуру, определить среднее арифметическое главной диагонали квадратной матрицы В. Вариант 18. Составить процедуру определения среднего арифметического значения элементов одномерного массива А. Используя эту процедуру, определить среднее арифметическое побочной диагонали квадратной матрицы В. Вариант 19. Составить процедуру умножения одномерного массива А на число q (каждый элемент массива умножается на число q). Используя эту процедуру, умножить каждую строку двумерной матрицы В на число, соответствующее номеру строки. Вариант 20. Составить процедуру умножения одномерного массива А на число q (каждый элемент массива умножается на число q). Используя эту процедуру, умножить каждый столбец двумерной матрицы В на число, соответствующее номеру столбца. Вариант 21. Составить процедуру подсчета суммы значений элементов и одномерном массиве. Используя ее, вычислить сумму элементов прямоугольной матрицы А. Вариант 22. Составить процедуру подсчета суммы значений элементов в одномерном массиве. Используя ее, найти сумму элементов, расположенных выше главной диагонали для квадратных матриц А и В. Вариант 23. Составить процедуру сортировки по возрастанию значений элементов одномерного массива. Используя ее, отсортировать элементы в каждой строке прямоугольной матрицы. Вариант 24. Описать процедуру вычисления следа матрицы - суммы диагональных элементов. Определить, какая из матриц X, Y, Z имеет максимальный след. Вариант 25. Составить процедуру умножения двух матриц произвольной размерности. Используя ее, вычислить k-юстепень квадратной матрицы А. Пример выполнения задания Составить процедуру сортировки по убыванию значений элементов одномерного массива. Используя ее отсортировать элементы в каждом столбце прямоугольной матрицы. Пусть задана матрица А, содержащая n строк и m столбцов, описана процедура Sort сортировки одномерного массива C, например методом максимального элемента (выбора). Чтобы организовать сортировку столбцов матрицы, после ввода элементов матрицы необходимо предусмотреть цикл по номерам столбцов матрицы. Поскольку процедура сортировки обеспечивает преобразование только одномерного массива, необходимо на каждом шаге внешнего цикла с помощью дополнительного цикла по номерам строк матрицы преобразовать очередной ее столбец в одномерный массив С и обратиться к процедуре Sort. Полученный отсортированный массив записывается на место исходного столбца матрицы. В конце программы осуществляется вывод преобразованной матрицы А. На рис. 4.1 приведены алгоритмы ввода и вывода столбцов прямоугольной матрицы. Алгоритм сортировки прямоугольной матрицы А представлен на рис. 4. 2 , где ввод и вывод матрицы А, также оформлен в виде соответствующих процедур. Процедура ввода матрицы Процедура вывода матрицы Рис. 4.1. Схема алгоритма ввода и вывода столбцов прямоугольной матрицы. Преобразование столбца в массив С | Процедура сортировки элементов одномерного массива Рис. 4.2. Схема алгоритма сортировки столбцов прямоугольной матрицы. {Цель: сортировка столбцов прямоугольной матрицы } {Параметры и переменные: а-двумерный массив, с-одномерный массив } {n –число строк, m-число столбцов, Nmax ,Mmax-максимально } {допустимое число строк и столбцов, } { Vector – тип одномерного массива, } { Matrix-тип двумерного массива } program SortingColumn; Const Nmax=20; Mmax=20; Type Vector=array[1..Nmax] of real; Matrix=array[1..Nmax,1..Mmax] of real; Var a:Matrix; c:Vector; i,j,m,n:integer; {процедура ввода двумерного массива } {Параметры;a-двумерный массив;n-число строк; } {m-число столбцов;i,j-параметры циклов } {Name-имя массива } Procedure InArr(n,m:integer; Var a:Matrix; Name:Char); var i,j:integer; Begin{InArr} Writeln('введите',n*m,'элементов матрицы',Name); for i:=1 to n do for j:=1 to m do begin Write(Name,'[',i,',',j,']='); read(a[i,j]) end end;{InArr} {процедура вывода двумерного массива } {Параметры;a-двумерный массив;n-число строк; } {m-число столбцов;i,j-параметры циклов } Procedure OutArr(var a:Matrix;n,m:integer); var i,j:integer; begin{OutArr} for i:=1 to n do begin for j:=1 to m do write(a[i,j]:6:2); Writeln end End;{OutArr} {процедура сортировки одномерного массива} {Параметры: с-одномерный массив;n-размер массива;} {k-номер максимального элемента; i,j-параметры циклов} {Max- максимальный элемент} procedure Sort( var c:Vector;n:integer); Var i,j,k:integer; Max:real; Begin{Sort} For i:=1 to n-1 do begin max:=c[i]; for j:=i+1 to n do if c[j]>Max then begin Max:=c[j]; k:=j end; c[k]:=c[i]; c[i]:=max end end;{Sort} Begin {SortingColumn} Writeln('введите число строк и столбцов матрицы A'); read(n,m); InArr(n,m,a,'a');{ввод матрицы A} Writeln('исходная матрица'); OutArr(a,n,m);{вывод результата} for j:=1 to m do begin {Преобразование столбца в одномерный массив} for i:=1 to n do c[i]:=a[i,j]; Sort(c,n);{Сортировка столбца} {Запись массива в столбец матрицы } for i:=1 to n do a[i,j]:=c[i] end; Writeln('преобразованная матрица'); Outarr(a,n,m);{вывод результата} End.{SortingColumn} СТРОКИ Подготовка к работе По указанной литературе и методическим указаниям к данной работе изучить порядок работы. Ответить на контрольные вопросы. 5.2. Контрольные вопросы 1. Что такое строка? 2. Каким идентификатором определяются данные строкового типа? 3. Какова максимально возможная длина строки? Как определить текущую длину строки? 4. Какие выражения называются строковыми? 5. Каким образом производится сравнение строк? 6. Какие операции допустимы над строковыми выражениями? 7. Как можно обратиться к отдельным символам строки? 8. Назначение специальных процедур и функций обработки данных строкового типа. |