Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа № 15.
Работа с двумерными массивами.
Цель: изучение и приобретение навыков работы с двумерными массивами, и получение дальнейших навыков по отладке и тестированию программ.
Оборудование и программное обеспечение: компьютер, Turbo Pascal 7.0.
Место проведения:
Время:
Пример 1. Дана матрица действительных чисел размером 3x5. Вычислить сумму элементов матрицы.
PROGRAM EX_1;
CONST n=3; {Количество строк}
m=5; {Количество столбцов}
TYPE mas=array[1..n,1..m] of real;
VAR b: mas; {Массив}
i: integer; {Индекс строки}
j: integer; {Индекс столбца}
s: real; {Сумма}
BEGIN
{Ввод значений матрицы}
Writeln('Введите значения элементов матрицы:');
for i:=1 to n do
for j:=1 to m do
readln(b[i,j]);
{Вычисление суммы}
s:=0;
for i:=1 to n do
for j:=1 to m do
s:=s+b[i,j];
writeln('Сумма = ',s);
END.
Пример 2. Дана матрица целых чисел размером 4x4. Заменить все элементы главной диагонали на нули. Вывести на экран монитора содержимое матрицы до обработки и после обработки.
PROGRAM EX_2;
VAR matr: array[1..4,1..4] of integer; {Матрица}
i: integer; {Индекс строки}
j: integer; {Индекс солбца}
BEGIN
{Ввод значений матрицы}
for i:=1 to 4 do
for j:=1 to 4 do
begin
write('Введите элемент ',i,' ',j,' ');
readln matr[i,j];
end;
{Вывод содержимого матрицы до обработки}
Writeln('Содержимое матрицы до обработки');
for i:=1 to 4 do begin
for j:=1 to 4 do
write(matr[i,j]:4);
writeln;
end;
{Обработка матрицы}
for i:=1 to 4 do matr[i,i]:=0;
{Вывод содержимого матрицы после обработки}
Writeln('Содержимое обработанной матрицы ');
for i:=1 t0 4 do begin
for j:=1 to 4 do
write(matr[i,j]:4);
writeln;
end;
END.
Пример 3. Сгенерировать 2-мерный числовой массив размера n*n. Найти скалярное произведение строки, в которой находится наименьший элемент, на столбец, в котором находится наибольший элемент.
Program min_na_max;
uses crt;
const n=3;
type matrix=array [1..n,1..n] of integer;
var ms:matrix;
scalyar:integer;
procedure gener(a,b:integer; var m:matrix);
var ii,jj:byte;
begin
randomize;
for ii:=1 to n do
for jj:=1 to n do
m[ii,jj]:=a+random(b-a);
end;
procedure vivod(x,y,shagx,shagy:byte; m:matrix);
var ii,jj:byte;
begin
for ii:=1 to n do
for jj:=1 to n do
begin
gotoxy(x+shagx*(ii-1),y+shagy*(jj-1));
writeln(m[ii,jj]:shagx);
end;
end;
function stroka(m:matrix):integer;
var imin,jmin,rezmin:byte;
min:integer;
begin
min:=m[1,1];
for imin:=1 to n do
for jmin:=1 to n do
if m[imin,jmin]<min then
begin
min:=m[imin,jmin];
rezmin:=imin;
end;
stroka:=rezmin;
end;
function stolbets(m:matrix):integer;
var imax,jmax,rezmax:byte;
max:integer;
begin
max:=m[1,1];
for imax:=1 to n do
for jmax:=1 to n do
if m[imax,jmax]>max then
begin
max:=m[imax,jmax];
rezmax:=jmax;
end;
stolbets:=rezmax;
end;
function scalar_multiplication(str,stb:integer;m:matrix):integer;
var k:byte;
sc:integer;
begin
sc:=0;
for k:=1 to n do
sc:=sc+m[str,k]*m[k,stb];
scalar_multiplication:=sc;
end;
BEGIN
clrscr;
writeln('Исходные данные');
gener(-10,10,ms);
vivod(2,2,5,1,ms);
writeln;
writeln('Скалярное произведение строки с наименьшим элементом');
writeln('на столбец с наибольшим элементом равно ',
scalar_multiplication(stroka(ms),stolbets(ms),ms));
readln;
END.
Порядок выполнения работы:
Задание: Создать и отладить программу для решения следующую задачу (см. Приложение).
Содержание отчета по каждому заданию:
Приложение лабораторной работе №15: (ваш номер по журналу соответствует номеру варианта)