Сделай Сам Свою Работу на 5

РАБОТА С МАССИВАМИ В TURBO PASCAL

 

Цель работы Овладеть техникой составления программ по обработке совокупности данных одного типа - массивов.

 

Задачи работыНаучиться применять основные принципы алгоритмизации и программирования в решении задач, использующих в качестве исходных данных массивы величин.

Обеспечивающие средства Сборник описаний практических работ, персональный компьютер, конспект лекций.

 

Задание Составить программы по обработке массивов, используя предложенные задания, отладить их и сохранить.

 

Требования к отчету Итоги практической работы представить в виде блок-схемы алгоритма и текста программы, привести значения исходных данных и значения полученных результатов (при необходимости вывести на печать).

 

Технология работы

1. Ознакомьтесь с теоретическим материалом, необходимым для выполнения работы:

Массив – это упорядоченная последовательность однотипных элементов определенной длины, имеющая общее имя.

Номер элемента в последовательности называется индексом. Количество элементов в массиве не может быть изменено в процессе выполнения программы. Элементы массива размещаются в памяти последовательно и нумеруются от 1 до n, где n – их количество в массиве. К каждому элементу массива имеется прямой доступ. Это означает, что для того чтобы обратиться к какому-либо элементу массива, нет нужды перебирать все его предыдущие элементы, достаточно указать номер этого элемента.

Одномерные массивы – массивы, в которых элементы пронумерованы последовательно по порядку: первый элемент, второй, третий и т.д. Для обозначения элементов одномерного массива используется один индекс.

Двумерные массивы – массивы, в которых данные условно организованы в виде таблицы (матрицы), где положение каждого элемента определяется номером строки т номером столбца. Для обозначения элементов двумерного массива используются два индекса: первый индекс для обозначения номера строки, второй индекс для обозначения номера столбца.

При работе с массивами в программе они должны быть объявлены (описаны), т.е. указаны имя массива, тип элементов массива, его размерность.

 

Одномерные массивы: описание, ввод и вывод, обработка массива

 

1.1.1 Описать массив можно двумя способами:

1) В разделе описания переменных мы можем описать массив следующим образом:

Var A: Array[n1..n2] Of <базовый тип>;

Здесь A – название массива;

Array– служебное слово;

n1,n2– соответственно номер первого и последнего элемента массива;

<базовый тип>– любой из уже изученных типов.

Количество элементов массива будет равно (n2- n1+1).

2) Описание массива заключается в создании нового оригинального типа. Для того, чтобы программист мог создавать свои новы типы в Паскале существует раздел описания типов Type. Этот раздел находится между разделом описания констант и разделом описания переменных.

Type

<Имя типа> = Array[n1..n2] Of <базовый тип>;

1.1.2 В большинстве случаев для обработки массивов используются циклы. В цикле имеется возможность поочередно перебрать все элементы массива.

Для ввода массива с клавиатуры может быть использован цикл следующего вида: пусть имеется массив с именем A, состоящий из n элементов, тогда For i:=1 To n Do Read (A[i]);

В этом случае пользователь вводит через пробел n элементов массива. Для ввода элементов массива с новой строки используется оператор ReadLn. Ввод данных в массив происходит следующим образом: сначала значение счетчика цикла равно 1; выполняется операция Read (A[1]); поле чего счетчик цикла становится равным 2; выполняется операция Read (A[2])… и т.д. до значения i=n включительно.

Для вывода массива на экран используется следующий цикл:

For i:=1 To n Do Write (A[i]);

WriteLn;

В данном случае на экран в одну строку будут выведены все n элементов массива, после чего курсор переместится на одну строку вниз.

Для обработки массивов также используются циклы.

 

Двумерные массивы: описание, ввод и вывод, обработка массива

1.2.1 Описание двумерных массивов отличается от описания одномерных массивов только тем, что мы указываем начальное и конечное значение для обоих индексов:

Var A: Array[n1..n2, m1..m2] Of <базовый тип>;

Здесь n1,n2– начальное и конечное значения первого индекса;

m1,m2– начальное и конечное значения второго индекса.

В Паскале не допускается употребление динамических массивов, т.е. таких, размер которых определяется в процессе выполнения. Изменение размеров массива происходит через изменение в тексте программы и повторную компиляцию. Для упрощения таких изменений удобно определять индексные параметры в разделе констант:

ConstImax = 10; Jmax = 20;

VarMas:Array[1.. Imax, 1..Jmax] OfInteger;

Теперь для изменения размеров массива Mas и всех операторов программы, связанных с этими размерами, достаточно отредактировать только одну строку в программе – раздел констант.

1.2.2 Для ввода и вывода двумерных массивов используются два вложенных цикла.

Ввод массива: For i:=1 To n Do

For j:=1 To m Do

Read (A[i,j]);

 

Вывод массива: For i:=1 To n Do

Begin

For j:=1 To m Do

Write (A[i,j]:3);

WriteLn;

End;

Для обработки двумерных массивов также используются два вложенных цикла.

 

2. Выполните следующие упражнения:

Задания уровня 1

Упражнение 1. Найти в массиве элементы, равные числу, заданному пользователем. Подсчитать их количество и вывести номер первого найденного элемента. Массив задается при помощи ввода с клавиатуры.

 

 

1. Наберите текст программы:

 

Program MAS_1;

const count=10;

var n,{Число для поиска}

a, {Номер первого элемента}

b, {Количество элементов}

i: integer;

m: array [1..count] of integer;

Begin

writeln(′Ввод исходного массива: ′);

for i:=1 to count do

Begin

write(′элемент №′, i, ′: ′);

readln(m[i]);

end;

a:=0; b:=0;

write(′Введите число для поиска →′); readln(n);

for i:=1 to count do{Поиск элемента, равного n}

if m[i]=n then

Begin

if b=0 then a:=i; {Запомним номер первого элемента, равного n}

b:=b+1; {Увеличить число найденных элементов на 1}

end;

if b=0 then writeln(′Нет таких элементов в массиве′)

Else

Begin

writeln(′Количество элементов массива, имеющих значение ′, n, ′ =′, b:3);

writeln(′Первый элемент имеет номер ′, a:3);

End

End.

 

2. Запустите программу на выполнение и проверьте её работу:Ctrl-F9

3. Для просмотра результатов выполненной программы необходимо нажать:Alt-F5

4. Сохраните программу на своем диске:<F2> A:\P6PR1

Упражнение 2. Сформировать матрицу случайных чисел и транспонировать ее. При транспонировании элементы матрицы переставляются таким образом, что строки исходной матрицы становятся столбцами транспонированной матрицы. При этом элементы, расположенные на главной диагонали исходной и транспонированной матриц, одни и те же. Операция транспонирования сводится к обмену элементов матрицы, расположенных симметрично относительно главной диагонали.

 

1. Наберите текст программы:

 

Program MAS_2;

const row=3; col=row;

var a: array [1..row, 1..col] of integer;

i, j, buf: integer;

Begin

randomize; {Инициализация датчика случайных чисел}

writeln(′Исходная матрица случайных чисел: ′);

for i:=1 to row do

Begin

for j:=1 to col do

Begin

a[i, j]:=random(100); {Случайное значение элемента}

write(a[i, j]:4); {Вывод элемента массива на экран}

end;

writeln;

end;

{Транспонирование матрицы}

for i:=1 to row do{Просмотр всех строк матрицы}

{Просмотр элементов в строке, расположенных выше главной диагонали}

for j:=1 to col do

Begin

buf:=a[i, j]; a[i, j]=a[j, i]; a[j, i]=buf;

end;

writeln(′Результат транспонирования матрицы: ′);

for i:=1 to row do

{Обмен элементов, симметричных относительно главной диагонали}

Begin

for j:=1 to col do write(a[i, j]:4);

writeln;

End

End.

2. Запустите программу на выполнение и проверьте её работу:Ctrl-F9

3. Для просмотра результатов выполненной программы необходимо нажать:Alt-F5

4. Сохраните программу на своем диске:<F2> A:\P6PR2

3. Выполнить самостоятельно:

Задания уровня 2

1. В одномерном массиве выполнить поиск максимального элемента массива, а затем вывести на экран его значение и порядковый номер в массиве. Массив задается с помощью датчика случайных чисел. Записать программу под именем P6PR3.

2.Требуется вывести на экран сумму четных элементов массива из 10 чисел. Массив заполняется случайными числами. Записать программу под именем P6PR4.

3.Требуется переписать элементы массива a в массив b в обратном порядке. Массив a заполняется случайными числами. Сохранить программу под именем P6PR5.

4.Задана матрица A размера 5×7. Требуется вывести ее на экран так, чтобы каждая строка матрицы выводилась на экран с новой строки. Сохранить программу под именем P6PR6.

Задания уровня 3

5.Требуется переписать элементы массива a в массив b, удвоив все элементы, меньшие первого элемента, остальные переписать без изменения. Массив a заполняется случайными числами. Сохранить программу под именем P6PR7.

6. Транспонировать целочисленную матрицу 5х5. Массив задается при помощи ввода с клавиатуры. Сохранить программу под именем P6PR8.

7.Составить программу, которая вводит с клавиатуры квадратный массив целых чисел и

формирует два вектора. В первый записываются элементы исходного массива, расположенные на главной диагонали и выше, а во второй – элементы, лежащие ниже главной диагонали. Предусмотреть вывод на экран. Сохранить программу под именем P6PR9.

8. В каждой строке матрицы C размера M×N найдите минимальный элемент и поменяйте его с первым элементом в этой строке. Сохранить программу под именем P6PR10.

9.Составьте программу вычисления среднего арифметического элементов в каждом столбце матрицы B размера N ×N и запишите полученные значения в главную диагональ этой матрицы. Сохранить программу под именем P6PR11.

 

 

5. Окончание работы:

 

1. Сохранить созданные программы.

2. Подготовить ответы на контрольные вопросы.

3. Показать работу преподавателю.

4. Завершить работу TURBO PASCAL.

 

 

Контрольные вопросы:

1. Что такое массив?

2. Что такое одномерный массив?

3. Что представляет собой двумерный массив?

4. Как обозначаются массив и элемент массива?

5. Как описываются массивы в программах?

6. Как производится ввод и вывод данных в массивах?

7. Перечислите характеристики массивов.

8. Какие типы адресации существуют при обращении к элементам массива?


ПРАКТИЧЕСКАЯ РАБОТА №7



©2015- 2017 stydopedia.ru Все материалы защищены законодательством РФ.