Информационные технологии обработки данных (Контр№2 Вариант №7)
.docxМинистерство образования и науки
Томский государственный университет систем управления и
радиоэлектроники.
Контрольная работа №2
по дисциплине «Информационные технологии обработки данных».
учебное пособие Коробовой В.В.
«Информационные технологии обработки данных».
Вариант № 7
Задание: Вариант № 7.
Задана вещественная матрица размером 7*7, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом. Значения элементов матрицы ввести с клавиатуры.
Описание структуры программы: Программа представляет собой массив с использованием процедур и функций.
Program L3;
uses crt;
const n=3;
type mas=array[1..7,1..7]of integer;
procedure Vvod(var x:mas);
var i,j:byte;
begin
for i:=1 to 7 do
for j:=1 to 7 do
begin
write('x[',i,',',j,']=');
readln(x[i,j]);
end;
clrscr;
writeln('Матрица:');
for i:=1 to 7 do
begin
for j:=1 to 7 do
write(x[i,j]:5);
writeln;
end;
end;
procedure MaxMin(a:mas; var imax,jmin:integer);
var i,j,max,min:integer;
begin
max:=a[1,1];
imax:=1;
min:=a[1,1];
jmin:=1;
for i:=1 to 7 do
for j:=1 to 7 do
begin
if a[i,j]>max then
begin
max:=a[i,j];
imax:=i;
end;
if a[i,j]<min then
begin
min:=a[i,j];
jmin:=j;
end;
end;
writeln('Максимальный элемент=',max,' в строке',imax);
writeln('Минимальный элемент=',min,' в столбце',jmin);
end;
function Scal(a:mas;imax,jmin:integer):integer;
var i,s:integer;
begin
s:=0;
for i:=1 to n do
s:=a[imax,i]*a[i,jmin];
Scal:=s;
end;
var a:mas;max,min,s:integer;
begin
Vvod(a);
MaxMin(a,max,min);
s:=Scal(a,max,min);
write('Скалярное произведение строки',max,' на столбец ',min,'=',s);
end.
Описание процедур и функций программы:
Разобьем программу на несколько блоков:
1.Формирование тела программы, устанавливаются константы,объявляются переменные.
2.Начало программы. Задается количество строк и столбцов для переменных i, j.
3.С клавиатуры вводятся значения матрицы. Формируется матрица 7*7.
4.Вводим процедуру поиска наибольшего элемента строки и наименьшего элемента столбца.
5.Поиск наибольшего элемента строки и наименьшего элемента столбца.
6.Вывод наибольшего элемента строки и наименьшего элемента столбца
7.Задаем функцию для вычисления скалярного произведения.
8.Объявление переменных, их типа, вычисление скалярного произведения и вывод результата.
Реализуем эти блоки на Паскале:
1.Формирование тела программы, устанавливаются константы,объявляются переменные:
Program L3;
uses crt;
const n=3;
type mas=array[1..7,1..7]of integer;
procedure Vvod(var x:mas);
var i,j:byte;
2.Начало программы. Задается количество строк и столбцов для переменных i, j:
begin
for i:=1 to 7 do
for j:=1 to 7 do
begin
write('x[',i,',',j,']=');
readln(x[i,j]);
end;
3. С клавиатуры вводятся значения матрицы. Формируется матрица 7*7:
clrscr;
writeln('Матрица:');
for i:=1 to 7 do
begin
for j:=1 to 7 do
write(x[i,j]:5);
writeln;
end;
end;
4. Вводим процедуру поиска наибольшего элемента строки и наименьшего элемента столбца:
procedure MaxMin(a:mas; var imax,jmin:integer);
var i,j,max,min:integer;
begin
max:=a[1,1];
imax:=1;
min:=a[1,1];
jmin:=1;
for i:=1 to 7 do
for j:=1 to 7 do
5.Поиск наибольшего элемента строки и наименьшего элемента столбца:
begin
if a[i,j]>max then
begin
max:=a[i,j];
imax:=i;
end;
if a[i,j]<min then
begin
min:=a[i,j];
jmin:=j;
end;
end;
6.Вывод наибольшего элемента строки и наименьшего элемента столбца:
writeln('Максимальный элемент=',max,' в строке',imax);
writeln('Минимальный элемент=',min,' в столбце',jmin);
end;
7.Задаем функцию для вычисления скалярного произведения:
function Scal(a:mas;imax,jmin:integer):integer;
var i,s:integer;
begin
s:=0;
for i:=1 to n do
s:=a[imax,i]*a[i,jmin];
Scal:=s;
end;
8.Объявление переменных, их типа, вычисление скалярного произведения и вывод результата:
var a:mas;max,min,s:integer;
begin
Vvod(a);
MaxMin(a,max,min);
s:=Scal(a,max,min);
write('Скалярное произведение строки',max,' на столбец ',min,'=',s);
end.
Пример работы программы: