
- •Лабораторная работа 7 массивы Цель работы
- •Методические указания
- •Вывод элементов I-й строки матрицы
- •Лабораторная работа 8 строки и множества
- •Лабораторная работа 9 комбинированный тип данных (записи)
- •Лабораторная работа 10 подпрограммы с типизированными параметрами -значениями и параметрами-переменными Цель работы
- •Лабораторная работа 11 подпрограммы с параметрами процедурного типа
- •Лабораторная работа 12 параметры-константы, нетипизированные параметры подпрограмм, массивы и строки открытого типа
- •Библиографический список
- •Содержание
- •Редактор м.Е. Цветкова Корректор н.А. Орлова
- •390005, Рязань, Гагарина, 59/1.
Вывод элементов I-й строки матрицы
Перевод курсора в начало новой строки
Ввод и вывод массивов предполагают выполнение указанных действий по отношению к каждому элементу массива, поэтому они реализуются с помощью соответствующих циклов. Выше приведен алгоритм ввода/вывода 10 целочисленных элементов вектора и вещественных компонент матрицы 4*4. Значения векторных составляющих выберем случайным образом.
Реализуем приведенный алгоритм на Turbo Pascal:
program Vvod_Vivod_Massivov;
const n = 10; k = 4;
var v : array[1..n] of byte;
m : array[1..k, 1..k] of real;
i, j : byte;
begin
randomize;
for i := 1 to n do v[i] := random(100);
for i := 1 to k do begin
writeln(‘Введите ’, i, ‘-ю строку матрицы’)
for j := 1 to k do read(m[i,j]); end;
writeln(‘Исходный вектор:’);
for i := 1 to n do write(v[i]:4); writeln;
writeln(‘Исходная матрица:’);
for i := 1 to k do begin
for j := 1 to k do write(m[i,j]:4:2, ‘ ‘); {Вывод строки матрицы}
writeln end
end.
Специфическим видом массива является символьный массив. Так как при вводе его элементов все набираемые с клавиатуры символы становятся значимыми, целесообразно производить их ввод персонально с помощью оператора readln. Вывод не обязательно проводить посимвольно, одномерные символьные массивы (строки) выводятся целиком (без организации цикла).
Ниже приведен пример действий с вектором символов.
program Stroki;
const k = 7;
var s1 : array[1..k] of char;
s2 : array[1..10] of char;
i, n : byte;
begin
s2 := ‘Это Pascal’; {Так можно задавать значения элементам массива}
for i := 1 to k do begin {Вводим посимвольно другой массив}
writeln(‘Введите ’, i, ‘-й символ’ );
readln(s1[i]) end;
writeln(‘Первая строка: ’,s1); {Вывод первой строки}
if s2[4] < s1[7] then s2 := ‘Turbo Pasc’;
writeln(‘Вторая строка: ’,s2) end.
obmen := false Алгоритм
i := 1 (1) n-1 сортировки
ДА
методом
buf
:=
стандартного
:=
обмена
:=
buf
obmen := true
n
:= n - 1
до obmen = false
Одним из часто встречающихся действий с массивами является их сортировка. Выше приведен алгоритм одного из простых способов сортировки - метод стандартного обмена. Сортируются по нарастанию n элементов вектора.
Метод предполагает выполнение просмотров списка элементов вектора данных. Первый просмотр выявляет в результате сравнений первого элемента со вторым, второго - с третьим и т.д. и соответствующих перестановок наибольший элемент, который занимает последнюю позицию в векторе. Сокращают число сортируемых компонент на этот элемент. Второй просмотр выполняют аналогично, он выявляет следующий по величине элемент и т.д. до тех пор, пока очередной просмотр не выявит отсутствие перестановок.
Контрольные вопросы
Что такое размер и размерность массива?
Как описать массив из 5 матриц 4х4 с вещественными компонентами?
Чем ограничен максимальный размер массива?
В чем особенность работы с символьными массивами?
Организуйте ввод и вывод вектора из 20 вещественных элементов.
Можно ли присваивать массив массиву?
Запрограммируйте вывод вектора из 30 целых чисел по 10 в строку.
В чем суть сортировки по методу стандартного обмена?
Заполните случайным образом вектор из 5 элементов типа “цвет”.
Каким будет результат выполнения фрагмента программы:
for i := 1 to 5 do; v[i] := 1; ?
Варианты задания
Для всех вариантов задания вывести на экран с комментариями исходный и результирующий массивы.
Построчно ввести матрицу 7х7 вещественных чисел. Заменить главную диагональ матрицы вектором наибольших значений в строках.
Выполнить задание варианта 1 для матрицы целых чисел и для наименьших элементов в строках.
Выполнить задание варианта 1 для матрицы со случайными значениями и для наименьших элементов столбцов.
Выполнить задание варианта 1 для матрицы из случайных целых чисел, не превышающих 100, для наибольших элементов столбцов.
Из матрицы символов 4х4 получить матрицу порядковых номеров элементов, для нее найти сумму элементов ниже главной диагонали.
Построчно ввести матрицу целых чисел 5х5, вторую матрицу заполнить случайными числами < 100. Сформировать третью матрицу: каждый ее элемент принимает значение ‘истина’, если элемент первой матрицы больше соответствующего элемента второй, иначе - ‘ложь’.
Случайным образом заполнить матрицу символов 6х6. Сформировать вектор: если в строке матрицы строчных латинских букв больше цифр, то его элемент вектора - ‘истина’, иначе - ‘ложь’.
В матрице целых чисел 7х7 поменять местами строки и столбцы.
В матрице целых чисел 7х7 поменять местами элементы, расположенные симметрично относительно главной диагонали.
Перемножить две матрицы 5х5 с произвольно взятыми элементами. Для C=AB
A и B - исходные матрицы.
С помощью итерационной формулы Ньютона найти для натурального n корень квадратный по формуле:
. Взять7 итераций.
Перемножить матрицу 7х7 и соответствующий вектор (см. вариант. 10).
Вычислить:
для x=1.2, n=5, a=(1.3,-0.8, 1.8, 4.1, -7.4, 6.7) (вектор коэффициентов, начинающийся с младших членов полинома) по схеме Горнера
.
Методом Эйлера решить f(x,y)= dy/dx =xy при начальных условиях (0, 1). С шагом h=0.1 вычислить координаты еще 9 точек по формулам:
,
.
Решить задачу варианта 14 модифицированным методом Эйлера, для которого
.
Вычислить:
, гдеz1, z2, z3 - векторы из 5 комплексных чисел, значения которых выбрать самостоятельно.
Сформировать из случайных чисел две матрицы 7х7. Если в строках с одинаковыми номерами совпадают хотя бы два элемента на одинаковых позициях, занести в элемент вектора true, иначе - false.
Для вектора с n случайными значениями найти среднее
и среднее квадратическое отклонение от среднего
.
Заполнить две матрицы 5х5 случайными значениями булевского типа. Если хотя бы один элемент строки первой матрицы совпадает с соответствующим элементом другой, занести в вектор 1, иначе - 0.
Задать вектор разрядов двоичного числа. Преобразовать его в десятичное.
С помощью символьного массива установить, является ли слово палиндромом.
Сформировать матрицу 7х7 из целых чисел. Переписать строки в обратном порядке.
Сформировать вектор из 100 вещественных чисел и преобразовать его в матрицу 10х10.
Сформировать матрицу 10х10 из вещественных чисел и переписать ее построчно в вектор.
Переписать матрицу варианта 24 в вектор по столбцам.