ОАиП часть 1. Лабораторная работа №2
.docУЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Факультет заочного, вечернего и дистанционного обучения
Специальность: программное обеспечение
информационных технологий
ЛАБОРАТОРНАЯ РАБОТА № 2
ПО ОСНОВАМ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
Лабораторная работа № 2.
Задание №1
В массиве действительных чисел найти и вывести на печать номер элемента, произведение которого с предыдущим элементом максимально, и номер элемента, сумма которого с последующим элементом минимальна.
Вывести на экран исходный массив, а также полученные произведения и суммы.
Program Arrays;
uses crt;
var
mas:array[1..100] of integer;
i, n, nummax, nummin, max, min:integer;
begin
clrscr;
write('Razmer massiva = ');
readln(n);
writeln('Vvedite massiv'); (*ввод массива*)
for i:=1 to n do
read(mas[i]);
writeln('Massiv:');
for i:=1 to n do
write(mas[i],' ');
writeln;
max:=mas[2]*mas[1];
nummax:=2;
min:=mas[1]+mas[2];
nummin:=1;
for i:=2 to n do (*нахождение максимального произведения*)
if mas[i]*mas[i-1] > max then
begin
max:=mas[i]*mas[i-1];
nummax:=i; (*номер элемента, произведение которого
с предыдущим максимально*)
end;
for i:=1 to n-1 do (*нахождение минимальной суммы*)
if mas[i]+mas[i+1] < min then
begin
min:=mas[i]+mas[i+1];
nummin:=i; (*номер элемента, сумма которого с
последующим минимальна*)
end;
writeln('Maximum multiply = ',max,', Number of element = ', nummax);
writeln('Minimum summa = ',min,', Number of element = ', nummin);
readkey;
end.
Задание №2
Дана матрица . Отпечатать номер каждого столбца и количество таких столбцов, для которых знаки элементов не совпадают. Отпечатать номер каждой строки и количество таких строк, элементы которых имеют совпадающие значения.
Вывести массив на экран.
Program Matrix;
uses crt;
var
matrix:array[1..100,1..100] of integer;
i, j, n, m, k, colCount, rowCount:integer;
elem:integer;
flag:boolean;
begin
clrscr;
Randomize;
write('Kolichestvo strok = ');
readln(n);
write('Kolichestvo stolbcov = ');
readln(m);
writeln('Matrix:');
for i:=1 to n do
begin
for j:=1 to m do
begin
matrix[i,j]:=random(20)-10; (*случайный выбор значений*)
write(matrix[i,j],' '); (*вывод матрицы на экран*)
end;
writeln;
end;
write('Numbers of cols: '); (*находим все столбцы с разными
знаками элемнтов*)
for j:=1 to m do
begin
if matrix[1,j]>=0 then
flag:=true
else
flag:=false;
for i:=1 to n do
begin
if flag then
begin
if matrix[i,j]<0 then
begin
inc(colCount);
write(j,' ');
i:=i+(n-i);
end;
end;
else
begin
if matrix[i,j]>=0 then
begin
inc(colCount);
write(j,' ');
i:=i+(n-i);
end;
end;
end;
end;
writeln;
writeln('Kolichestvo cols = ', colCount);
write('Numbers of rows: '); (*находим все строки с
совпадающими элементами*)
for i:=1 to n do
begin
for j:=1 to m do
begin
elem:=matrix[i,j];
for k:=1 to m do
begin
if (matrix[i,k]=elem) and (k<>j) then
begin
write(i,' ');
inc(rowCount);
k:=k+(m-k);
j:=j+(m-j);
end;
end;
end;
end;
writeln;
write('Kolichestvo rows = ', rowCount);
readkey;
end.