Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП лабораторные работы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
779.26 Кб
Скачать

4 Тесты

Истина или ложь?

Каждое из представленных ниже утверждений либо верно, либо нет.

  1. Элементы массива могут принадлежать различным типам – как простым, так и структурированным.

  2. Для вычисления количества элементов в массиве в Turbo Pascal существует стандартная процедура.

  3. Номер элемента в линейном массиве не имеет существенного значения при обработке вектора.

  4. К линейному массиву применимы все операции, что и ко множеству.

  5. Для доступа к отдельному элементу вектора в Turbo Pascal достаточно указать имя вектора и в квадратных скобках позиционный номер (индекс) этого элемента.

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

  7. Количество элементов линейного массива в Turbo Pascal не ограничено.

  8. В качестве типа, индексирующего массив, в Turbo Pascal может быть использован тип longint.

  9. Типы char, boolean, а так же перечислимый тип можно использовать при индексировании вектора.

  10. В Turbo Pascal индексы вектора могут представляться в виде не только явно заданных значений, но и переменных, и выражений.

Работа №8

Тема: Решение задач с использованием двумерных массивов

Цель: Закрепить теоретический материал по двумерным массивам. Научиться решать задачи с использованием двумерных массивов.

1 Перечень знаний и умений, необходимых для выполнения лабораторной работы

Перед тем, как приступить к выполнению лабораторной работы, студенту необходимо ознакомиться со следующим материалом:

  1. понятия многомерного массива и матрицы;

  2. понятие элемента многомерного массива;

  3. способ доступа к элементам многомерного массива;

  4. способы объявления многомерного массива.

2 Пример решения задачи

Поменять местами столбцы двумерного массива, содержащие минимальный и максимальный элементы.

Например:

max min min max

Решение задачи разобьём на четыре этапа:

  1. ввод исходного двумерного массива;

  2. нахождение максимального и минимального элементов массива;

  3. обмен столбцов;

  4. вывод результирующей матрицы.

Для реализации первого этапа потребуются следующие переменные: m – количество строк массива, n – количество столбцов массива, а[1. . 20, 1. .20] – двумерный массив, i,j – для организации обхода матрицы.

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

writeln(“укажите количество строк матрицы”);

readln(n);

writeln(“укажите количество столбцов матрицы”);

readln(m);

writeln(“укажите элементы матрицы”);

for i:=1 to n do

for j:=1 to m do

begin

writeln(‘укажите элемент, стоящий на ’,i, ‘-ой строке и ’,j, ‘-м столбце матрицы’);

read(a[i,j]);

end;

Второй этап начинается с того, что первый элемент матрицы, т.е. a[1,1] будет считаться сразу и максимальным и минимальным элементом. Для обозначения минимального и максимального элементов введем переменные min и max соответственно. Номера столбцов содержащих минимальный и максимальный элементы обозначим st_min и st_max. Механизм поиска минимального и максимального элементов матрицы схож с поиском в линейной таблице.

min:= a[1,1]; st_min:=1; max:= a[1,1]; st_max:=1;

for i:=1 to m do

for j:=1 to n do

begin

if min>a[i,j] then

begin min:=a[i,j]; st_min:=j; end;

if max< a[i,j] then

begin max:= a[i,j]; st_max:=j; end;

end;

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

2

1 3

Рисунок 6.1 – Обмен местами максимального и минимального элементов в двумерном массиве

for i:=1 to m do

begin

otvet:=a[i,st_min];

a[i,st_min]:= a[i,st_max];

a[i,st_max]:=otvet;

end;

На четвертом этапе происходит вывод массива на экран.

writeln(‘результат:’);

for i:=1 to m do

begin

for j:=1 to n do

write(a[i,j]:8:2,’ ’);

writeln();

end;

Таким образом вся программа примет вид:

program min_max;

uses crt;

var

a: array[1. .20, 1. .20] of real;

i,j,m,n,st_min,st_max: integer;

min,max,otvet: real;

begin

clrscr;

writeln(“укажите количество строк матрицы”); readln(m);

writeln(“укажите количество столбцов матрицы”); readln(n);

writeln(“укажите элементы матрицы”);

for i:=1 to n do

for j:=1 to m do

begin

writeln(‘укажите элемент, стоящий на ’,i, ‘-ой строке и ’,j, ‘-м столбце матрицы’);

readln(a[i,j]);

end;

min:= a[1,1]; st_min:=1; max:= a[1,1]; st_max:=1;

for i:=1 to m do

for j:=1 to n do

begin

if min>a[i,j] then

begin min:=a[i,j]; st_min:=j; end;

if max< a[i,j] then

begin max:= a[i,j]; st_max:=j; end;

end;

for i:=1 to m do

begin

otvet:=a[i,st_min];

a[i,st_min]:= a[i,st_max];

a[i,st_max]:=otvet;

end;

writeln(‘результат:’);

for i:=1 to m do

begin

for j:=1 to n do

write(a[i,j]:8:2,’ ’);

writeln();

end;

end.