Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Федеральное агентство по образованию Российской Федерации
Томский государственный университет систем управления и радиоэлектроники (ТУСУР)
Кафедра ИИТ
Отчет
По лабораторной работе №3
Тема: «Массивы»
Выполнил студент гр.537
Шипина Анастасия Николаевна
Принял старший преподаватель кафедры КСУП
Потапова Евгения Михайловна
2008
Содержание
Введение………………………………………………………………………….......3
Основная часть……………………………………………………………………….5
Первая задача……………………………………………………………….………..5
Вторая задача…………………………………………………………….……..…....7
Заключение……………………………………………………………………..….....9
Введение
Массив это структура данных, которую можно рассматривать как набор переменных одинакового типа, имеющих общее имя. Массивы бывают одномерные и многомерные. Доступ к элементам массива осуществляется по индексу.
Одномерные массивы
Массив в программах должен быть объявлен. Это делается следующим образом:
<имя>: array [<н_индекс>..<в_индекс>] of <тип>;
Здесь <имя> - имя переменной-массива, array зарезервированное слово языка Паскаль, обозначающее, что переменная является массивом, <н_индекс> и <в_индекс> - соответственно, нижний и верхний индексы, которыми являются целые константы, определяющие диапазон изменения индексов элементов одномерного массива (то есть размер массива), <тип> - тип элементов массива.
Под выводом массива понимается вывод всех значений элементов массива.
Под вводом массива понимается получение от пользователя во время работы программы значений элементов массива.
Массив можно задать, используя константы и счетчик случайных чисел, а также вычислять элементы массива по заданным формулам или просто вводить их последовательно.
Для ввода больших массивов удобно использовать специальную функцию-генератор случайных чисел. В языке Паскаль это функция random(x). вызов ее без аргумента возвращает случайное вещественное число из интервала [0;1), а вызов с аргументом x, где x случайное целое число (типа integer) из промежутка [0;n). Случайные целые числа, принадлежащие отрезку [a,b], вычисляют по формуле a + random(b a + 1). Например, если необходимо случайное число на отрезке [10;99], функцию random можно записать следующим образом: otr :=10 + random(90);. Эта функция в Паскале обычно используется совместно с процедурой randomize, переустанавливающей базу генерации случайных чисел, то есть позволяющей при последовательных запусках программы получать разные случайные последовательности.
Двухмерные массивы
Двухмерным массивом называется совокупность данных, каждое значение которых зависит от двух чисел, которые можно рассматривать как индекс строки и индекс столбца в матрице.
Формат записи двухмерного массива в языке Паскаль:
<имя>:array [<н_индекс_1>..<в_индекс_1>,
<н_индекс_2>..<в_индекс_2>]
of <тип>;
Для того чтобы использовать элемент массива, надо указать имя массива и индексы элемента. Первый индекс соответствует номеру строки, второй номеру столбца.
Для ввода многомерных массивов, так же как и одномерных, можно использовать генератор случайных чисел, константы и файлы. При описании массивов удобно использовать именованные константы в качестве значений верхних индексов массивов.
Аналогом массивов языка Паскаль в математике являются матрицы. Матрицы, у которых число строк равно числу столбцов, называется квадратными. А(n,n) квадратная матрица.
Процедуры
Процедура независимая именованная часть программы, которую можно вызывать по имени для выполнения определенных действий. Структура процедуры повторяет структуру программы. Упоминание имени процедуры в тексте программы приводит к активизации процедуры и называется ее вызовом.
Все процедуры делятся на встроенные (стандартные) и пользовательские (определенные пользователем).
Описание процедуры состоит из заголовка и тела. Заголовок процедуры записывается следующим образом:
procedure <имя> [(<список>)];
Здесь <имя> - имя процедуры, <список> - список формальных параметров (определенных в заголовке).
Список формальных параметров не обязателен. Если он имеется, в нем перечисляются имена формальных параметров и их типы, отделяемые друг от друга точкой с запятой.
В заголовках вместо формальных параметров можно использовать константы, массивы, типы, строки и т.д.
Функции
Функция аналогична процедуре, но имеются два отличия: во первых, функция передает в точку вызова скалярное (одиночно) значение, во вторых, имя функции может входить в выражение как операнд.
Отличие процедур от функций состоит в том, что процедуры служат для задания совокупности действий, направленных на изменение программной обстановки, а функции, являясь частным случаем процедур, отличаются от них тем, что обязательно возвращаются в точку вызова основной программы результат, причем единственный.
Все функции, как и процедуры, делятся на встроенные (стандартные) и пользовательские (определенные пользователем).
Описание функции состоит из заголовка и тела. Заголовок функции:
function <имя> [(<список>)]: <тип>;
Здесь <имя> - имя функции, <список> - список формальных параметров (определенных в заголовке), <тип> - тип возвращаемого функцией результата.
Список формальных параметров не обязателен. Если он имеется, в нем перечисляются имена формальных параметров и их типы, отделяемые друг от друга точкой с запятой.
В заголовках вместо формальных параметров можно использовать константы, массивы, типы, строки и т.д.
Основная часть
Первая задача
Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размером 10x10 напечатать индексы всех ее седловых точек.
uses crt;
const n=10;m=10;
var a:array[1..n,1..m] of integer;
i,j,k,l:integer;
min,max,c,p:real;
begin
clrscr;
randomize;
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(30)-3;
write(a[i,j]:3);
end;
writeln;
end;
for i:=1 to n do
begin
min:=a[i,1];
for j:=1 to m do
begin
min:=a[i,1];
for j:=1 to m do
if a[i,j]<=min then
begin
min:=a[i,j];
k:=j;
end;
max:=a[1,k];
for l:=1 to n do
if a[l,k]>=max then max:=a[l,k];
if max=min then
begin
writeln('stroka- ',i,' stolbec- ',k);
break;
end;
end;
writeln('takix tochek ne syshectbyet!');
end.
Вторая задача
Даны две последовательности по n целых чисел в каждой. Найти наименьшее среди тех чисел первой последовательности, которые не входят во вторую последовательность (считая, что хотя бы одно число есть).
var
k:integer;
n,m:integer;
type massiv=array[1..1000] of integer;
procedure sort(var mas:massiv;n:integer);
var
a:boolean;
i:integer;
begin
a:=true;
while a do
begin
a:=false;
for i:=1 to n-1 do
begin
if mas[i]>mas[i+1] then
k:=mas[i+1];
mas[i+1]:=mas[i];
mas[i]:=k;
end;
end;
end;
function poisk(var mas:massiv; n:integer; m:integer):integer;
var
b:boolean;
i:integer;
begin
b:=false;
for i:=1 to n do
begin
if mas[i]=n then b:=true;■
end;
poisk:=b;
end;
var
i:integer;
begin
writeln(n);
readln(n);
for i:=1 to n do
begin
mas:=random(100);
mas1:=random(100);
end;
i:=0;
while not poisk(mas,n,mas1[i]) do
i:=i+1;
writeln(i);
end.