Лабораторная работа № 6
Массивы Тема: Программирование алгоритмов работы с массивами. Цель работы: Освоить основные алгоритмы работы с одномерными и многомерными массивами.
Задание на лабораторную работу
Пример оформления работы Задание 1.
Для заполнения вектора целыми случайными числами в заданном диапазоне используется функция-генератор случайных чисел random(k), где k – целое число. Каждый раз при обращении к этой функции она будет вырабатывать целое число с равномерным распределением от 0 до k-1. Для сдвига диапазона случайных чисел в нужную сторону можно использовать следующее обращение к этой функции: random(v_max – v_min + 1) + v_min. Поиск максимального элемента вектора осуществляется следующим образом. Перед началом поиска за максимальный элемент вектора max принимается его первый элемент: max=vector1. Далее каждый следующий элемент вектора vectori, начиная со второго, сравнивается с максимальным элементом: если он больше максимального, то сейчас он – максимальный элемент вектора: max=vectori. Поиск минимального элемента осуществляется аналогично. В процессе поиска индексы максимального и минимального элементов (i_max, i_min) запоминаются.
После окончания поиска, найденные максимальный и минимальный элементы меняются местами.
Program Variant_0; Uses WinCrt; Const n = 10; {задание размера вектора именованной константой} Var i, v_min, v_max, i_max, max, i_min, min: Integer; vector: Array [1..n] Of Integer; Begin Randomize; {запуск генератора случайных чисел} WriteLn('Лабораторная работа №6_1'); WriteLn('Вариант №0'); WriteLn('ИС-11-1'); WriteLn('Пупкин Василий'); WriteLn; WriteLn('Задайте диапазон случайных чисел'); Write(‘v_min=’); ReadLn(v_min); Write(‘v_max=’); ReadLn(v_max); For i:=1 To n Do {заполнение вектора случайными числами} vector[i]:=Random(v_max-v_min + 1) + v_min; WriteLn; WriteLn('Исходный вектор:'); For i:=1 To n Do {вывод на экран исходного вектора} Write(vector[i]:5); WriteLn; max:= vector[1]; {пока макс элемент – первый элемент вектора} i_max:= 1; min:= vector[1]; {пока мин элемент – первый элемент вектора} i_min:= 1; For i:=2 To n Do {поиск начинаем со второго элемента} Begin If (vector[i] > max) Then {если очередной элемент больше} {текущего максимального} Begin max:= vector[i]; {то максимальным элементом} i_max:= i; {становится очередной элемент} {вектора} End; If (vector[i] < min) Then {если очередной элемент меньше} {текущего минимального} Begin min:= vector[i]; {то минимальным элементом} i_min:= i; {становится очередной элемент} {вектора} End; End; WriteLn; WriteLn(‘max=’, max, ‘ i_max=’, i_max); WriteLn(‘min=’, min, ‘ i_min=’, i_min); vector[i_max]:=min; {меняем местами макс и мин элементы} vector[i_min]:=max; {в векторе} WriteLn; WriteLn('Полученный вектор:'); For i:=1 To n Do {вывод на экран полученного вектора} Write(vector[i]:5); WriteLn; End.
Задание 2. 1. Заполнить квадратный массив massivnn целыми случайными числами в диапазоне от v_min до v_max. Поменять местами главную и побочную диагонали массива. Размер массива n задать константой. Границы диапазона v_min и v_max задать с консоли. Вывести на экран исходный и полученный массивы.
Элементы главной диагонали квадратного массива имеют одинаковые индексы: massivii (i=1…n). Соответствующие им построчно элементы побочной диагонали имеют индексы massivi,n-i+1. Меняем их местами алгоритмом циклического обмена через третью переменную.
2. Схема алгоритма решения задачи: 3. Код программы:
Program Variant_0; Uses WinCrt; Const n = 5; {задание размера массива именованной константой} Var i, j: Word; k, v_min, v_max: Integer; massiv: Array [1..n, 1..n] Of Integer; Begin Randomize; {запуск генератора случайных чисел} WriteLn('Лабораторная работа №6_2'); WriteLn('Вариант №0'); WriteLn('ИС-11-1'); WriteLn('Пупкин Василий'); WriteLn; WriteLn('Задайте диапазон случайных чисел'); Write(‘v_min=’); ReadLn(v_min); Write(‘v_max=’); ReadLn(v_max); For i:=1 To n Do {заполнение массива случайными числами} For j:=1 To n Do massiv[i,j]:=Random(v_max-v_min + 1) + v_min; WriteLn; WriteLn('Исходный массив:'); For i:=1 To n Do {вывод на экран исходного массива} Begin For j:=1 To n Do Write(massiv[i,j]:5); WriteLn; End; WriteLn; For i:=1 To n Do {меняем местами соответствующие элементы} Begin {главной и побочной диагоналей} k:=massiv[i,i]; massiv[i,i]:=massiv[i,n-i+1]; massiv[i,n-i+1]:=k; End; WriteLn; WriteLn('Полученный массив:'); For i:=1 To n Do {вывод на экран полученного массива} Begin For j:=1 To n Do Write(massiv[i,j]:5); WriteLn; End; WriteLn; End.
4. Компиляция, отладка, тестирование и получение результата:
Читайте также: А. Лабораторная установка Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|