Программирование на Pascal / Delphi / Лабораторная работа1 / Лаб.раб
.4.docМинистерство Образования Российской Федерации
Московский Государственный Индустриальный Университет
Филиал в г. Вязьме
Отчет по лабораторной работе № 4
Дисциплина: «Информатика и программирование»
Тема: «Массивы»
Вариант: 5
Группа: 03Ид1
Студент: Афанасьев Виктор Валерьевич
Преподаватель: Соколова Н.В.
2003 г.
Лабораторная работа № 4
Тема: Разработать алгоритм решения задачи согласно полученному варианту, представить этот алгоритм в виде программы на языке Turbo Pascal 7.0.
Цель: ввод написанной на языке Turbo Pascal 7.0 программы в ПЭВМ, отладка программы и вывод полученного результата .
Задание: Заполнить матрицу 10х10 следующим образом:
1…1…1…1…1…1…1…1…1…1
0…2…2…2…2…2…2…2…2…0
0…0…3…3…3…3…3…3…0…0
0…0…0…4…4…4…4…0…0…0
А= 0…0…0…0…5…5…0…0…0…0
0…0…0…0…6…6…0…0…0…0
0…0…0…7…0…0…7…0…0…0
0…0…8…0…0…0…0…8…0…0
0…9…0…0…0…0…0…0…9…0
10..10..10..10..10..10..10..10..10..10
Вывести заполненную матрицу на экран монитора или на принтер, подсчитать количество нулевых элементов, больших 4 и меньших 9, вывести полученный результат.
Краткие теоретические сведения:
Массивы
Массивы - это совокупности однотипных элементов. Характеризуются они следующим:
-
каждый компонент массива может быть явно обозначен и к нему имеется прямой доступ;
-
число компонент массива определяется при его описании и в дальнейшем не меняется.
Для обозначения компонент массива используется имя переменной-массива и так называемые индексы, которые обычно указывают желаемый элемент. Тип индекса может быть только порядковым (кроме longint). Чаще всего используется интервальный тип (диапазон).
Описание типа массива задается следующим образом:
type
имя типа = array[ список индексов ] of тип
Здесь имя типа - правильный идентификатор; список индексов - список одного или нескольких индексных типов, разделенных запятыми; тип - любой тип данных.
Вводить и выводить массивы можно только поэлементно.
Пример 1. Ввод и вывод одномерного массива.
const
n = 5;
type
mas = array[1..n] of integer;
var
a: mas;
i: byte;
begin
writeln('введите элементы массива');
for i:=1 to n do readln(a[i]);
writeln('вывод элементов массива:');
for i:=1 to n do write(a[i]:5);
end.
Определить переменную как массив можно и непосредственно при ее описании, без предварительного описания типа массива, например:
var a,b,c: array[1..10] of integer;
Если массивы a и b описаны как:
var
a = array[1..5] of integer;
b = array[1..5] of integer;
то переменные a и b считаются разных типов. Для обеспечения совместимости применяйте описание переменных через предварительное описание типа.
Если типы массивов идентичны, то в программе один массив может быть присвоен другому. В этом случае значения всех переменных одного массива будет присвоены соответствующим элементам второго массива.
Вместе с тем, над массивами не определены операции отношения. Сравнивать два массива можно только поэлементно.
Так как тип, идущий за ключевым словом of в описании массива, - любой тип Турбо Паскаль, то он может быть и другим массивом. Например:
type
mas = array[1..5] of array[1..10] of integer;
Такую запись можно заменить более компактной:
type
mas = array[1..5, 1..10] of integer;
Таким образом возникает понятие многомерного массива. Глубина вложенности массивов произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничена, однако не может быть более 65520 байт.
Работа с многомерными массивами почти всегда связана с организацией вложенных циклов. Так, чтобы заполнить двумерный массив (матрицу) случайными числами, используют конструкцию вида:
for i:=1 to m do
for j:=1 to n do a[i,j]:=random(10);
Для "красивого" вывода матрицы на экран используйте такой цикл:
for i:=1 to m do begin
for j:=1 to n do write(a[i,j]:5);
writeln;
end;
Представление алгоритма в виде блок-схемы:
-
+
- +
- +
_ +
Текст программы:
program pr4;
uses crt;
var
i,j,l,k:integer;
A:array[1..10,1..10] of integer;
Begin
clrscr;
writeln('Заполнение матрицы');
for i:=1 to 10 do
begin
for j:=1 to 10 do
begin
if (i=j) or (i+j=11) or (i=10) or (i<5) and (i<j) and (i+j<11) then A[i,j]:=i else A[i,j]:=0;
write(A[i,j]:4);
if (A[i,j]>4) and (A[i,j]<9) then k:=k+1;
if A[i,j]=0 then l:=l+1;
end;
writeln;
writeln;
end;
writeln('Кол-во элементов равных нулю равно ',l);
writeln('Кол-во элементов >4 и <9 равно ',k);
readln;
end.
Тестовый пример:
Выходные данные:
Заполнение матрицы
1…1…1…1…1…1…1…1…1…1
0…2…2…2…2…2…2…2…2…0
0…0…3…3…3…3…3…3…0…0
0…0…0…4…4…4…4…0…0…0
0…0…0…0…5…5…0…0…0…0
0…0…0…0…6…6…0…0…0…0
0…0…0…7…0…0…7…0…0…0
0…0…8…0…0…0…0…8…0…0
0…9…0…0…0…0…0…0…9…0
10..10..10..10..10..10..10..10..10..10
Количество элементов равных нулю равно 52
Количество элементов >4 и <9 равно 8
Выполнил:_________________
Защитил:___________________