 Добро пожаловать,
|
|
|
|
|
|
Книги-online
Лабораторная работа №4
Лабораторная работа 4
Программирование с использованием массивов
Цель работы: научиться правильно описывать различные массивы, уметь инициализировать массивы, распечатывать содержимое массива; научится решать задачи на использование массивов.
Общие сведения:
Массив - это структурированный тип данных, который используется для описания упорядоченной совокупности фиксированного числа элементов одного типа, имеющих общее имя. Для обозначения элементов массива используются имя переменной-массива и индекс.
Перед выполнением работы необходимо изучить правила описания и использования переменных типа массив, типизированных констант типа массив.
Примеры:
Пример1: Дан двумерный массив. В каждой строке все его элементы, не равные нулю, переписать (сохраняя порядок) в начало строки, а нулевые элементы - в конец массива. Новый массив не заводить.
Этапы решения задачи:
1. Суть одного из алгоритмов решения данной задачи состоит в том чтобы "просматривать" массив построчно и находить в каждой строке пару (0:число), а затем менять их местами между собой и так до тех пор пока в строке таких пар не окажется.
2. Напишем программу на псевдо паскале:
program example1;
var
V:array[1..100,1..100] of integer;
m,n, i,j, c: integer;
flag: boolean;
begin
<ввод размерности массива m*n>
<заполнение ячеек массива>
for i:=1 to m do
repeat
flag:= true;
for j:=1 to n-1 do
if (v[i,j]=0) and (v[i,j+1]0) then begin
<поменять их местами>
flag:= false;
end;
until flag;
<Печать массива>
readln;
end.
3.Составим блок схему алгоритма
Детализируем блок "Упорядочиваем 1-ю строку"
Блок схема алгоритма целиком:
4.Приведем программу на языке Паскаль:
program example1;
var
V:array[1..100,1..100] of integer;
m,n, i,j, c: integer;
flag: boolean;
begin
write('Введите размерность массива m-n> '); readln(m,n);
for i:= 1 to m do
for j:= 1 to n do begin
write('V[',i,',',j,']= '); readln(V[i,j]);
end;
for i:=1 to m do
repeat
flag:= true;
for j:=1 to n-1 do
if (v[i,j]=0) and (v[i,j+1]0) then begin
c:=v[i,j]; v[i,j]:=v[i,j+1]; v[i,j+1]:=c;
flag:= false;
end;
until flag;
for i:= 1 to m do begin
for j:= 1 to n do write(V[i,j]:2);
writeln
end;
readln;
end.
Контрольные вопросы
Каким образом определяются переменные типа массив (одномерный и двумерный)?
Как осуществляется доступ к отдельному элементу одномерного и двумерного массива?
Каким образом выводятся элементы массива на экран?
Приведите пример фрагмента программы, который выводит на экран двумерный массив в виде матрицы.
Сколько чисел можно записать в шестимерный массив X : Array[0..1, 0..1, 0..1, 0..1, 0..1, 0..1] of Integer?
Задания
Даны целые числа а1, а2, а3. Получить целочисленную матрицу [bij]i,j=1,2,3, для которой bij=ai-3aj.
Получить [aij]i=1,…10; j=1,…12 - целочисленную матрицу, для которой aij=i+2j.
Дано натуральное число n. Получить действительную матрицу [aij]i, j=1,…n, для которой aij= .
Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в заштрихованной части матрицы.
а) б) в) г)
Дана квадратная вещественная матрица размерности n. Найти количество нулевых элементов, стоящих:
выше главной диагонали;
ниже главной диагонали;
выше и ниже побочной.
Дана вещественная матрица размерности n * m. По матрице получить логический вектор, присвоив его k-ому элементу значение True , если выполнено указанное условие и значение False иначе:
- все элементы k столбца нулевые;
- элементы k строки матрицы упорядочены по убыванию;
- k строка массива симметрична.
Дана вещественная матрица размерности n * m. Сформировать вектор b, в котором элементы вычисляются как:
- произведение элементов соответствующих строк;
- среднее арифметическое соответствующих столбцов;
- разность наибольших и наименьших элементов соответствующих строк;
- значения первых отрицательных элементов в столбце.
Дан двухмерный массив A[1..m,1..n]. Написать программу построения одномерного массива B[1..m], элементы которого соответственно равны а) суммам элементов строк, б) произведениям элементов строк, в) наименьшим средних арифметических элементов строк.
Расположить элементы данного массива в обратном порядке (первый элемент меняется с последним, второй - с предпоследним и т.д. до середины; если массив содержит нечетное количество элементов, то средний остается без изменения).
В данном массиве поменять местами элементы, стоящие на нечетных местах, с элементами, стоящими на четных местах.
Задачи повышенной сложности
В массиве А[1..N,1..N] определить номера строки и столбца какой-нибудь седловой точки. Некоторый элемент массива называется седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце.
Массив А[1..5,1..7] содержит вещественные числа. Требуется ввести целое число K и вычислить сумму элементов А[I,J], для которых I+J=К. Прежде, однако следует убедиться, что значение К позволяет найти решение, в противном случае нужно напечатать сообщение об ошибке.
Дан массив A[1..N,1..N]. Составить программу, которая прибавила бы каждому элементу данной строки элемент, принадлежащий этой строке и главной диагонали.
Дана матрица NxM. Переставляя ее строки и столбцы, переместить наибольший элемент в верхний левый угол. Определить можно ли таким же образом поместить минимальный элемент в нижний правый угол.
Заполнить двухмерный массив Т[1..n,1..n] последовательными целыми числами от 1 до n 52 0, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке:
1 2 3 4 5 6
20 21 22 23 24 7
19 32 33 34 25 8
18 31 36 35 26 9
30 29 28 27 10
15 14 13 12 11
Элемент двухмерного массива называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером NxN найти максимум среди всех локальных минимумов.
Назад
На главную
Учебник по языку Pascal
Лабораторные работы по программированию
bookdelphi
bookdelphi
Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском.
книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать
|
|