Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОАиП часть 1. Лабораторная работа №2

.doc
Скачиваний:
9
Добавлен:
01.04.2014
Размер:
39.94 Кб
Скачать

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Факультет заочного, вечернего и дистанционного обучения

Специальность: программное обеспечение

информационных технологий

ЛАБОРАТОРНАЯ РАБОТА № 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.