Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прогр часть 1.doc
Скачиваний:
21
Добавлен:
07.06.2015
Размер:
1 Мб
Скачать

Завдання до лабораторної роботи

Складіть програми для розв’язання наступних задач.

Варіант 0n, 3n. Знайдіть суму трьох найбільших <умова А> елементів вихідного масиву Р(22).

Варіант 1n. Знайдіть добуток двох найбільших і двох найменших <умова А> елементів вихідного масиву В(25).

Варіант 2n. Сформуйте два масиви, що містять значення й індекси <умова А> елементів вихідного масиву Х(20).

Умова А наведена в табл.21.

Таблиця 21

n

Умова А

n

Умова А

1

Додатних парних

2

Від’ємних парних

3

Додатних непарних

4

Від’ємних непарних

5

Непарних, які находяться в інтервалі [1;25]

6

Парних, які находяться в інтервалі [-20;20]

7

Додатних кратних 3

8

Кратних 3 і не менших за 10

9

Від’ємних кратних 4

0

Кратних 5 і не більших за 50

Лабораторна робота 8 вкладені цикли. Обробка двовимірних масивів

Мета роботи: виробити практичні навички в складанні алгоритмів, написанні та налагодженні програм на селективну обробку двовимірних масивів.

Загальні вказівки

У Паскалі багатовимірні масиви можуть визначатися послідовно: спочатку описується один масив, потім другий, елементами якого є оголошені раніше масиви, і т.д. Один масив вкладається в інший, і ступінь такого вкладення не обмежений.

Наприклад:

type str=array[1..10] of real;

tabl=array[1..5] of str;

Наведений опис двовимірного масиву можна замінити еквівалентним описом

type tabl=array[1..5,1..10] of real;

При обробці двовимірних масивів звичайно застосовуються вкладені цикли. Цикл, що охоплює інші цикли, називається зовнішнім, інші цикли - внутрішніми.

Приклад виконання завдання 1 лабораторної роботи

Приклад 27. Обчислити середні геометричні додатних елементів кожного рядка матриці X(5,8). Визначити мінімальне значення цих середніх і номер відповідного рядка.

Програма має вид:

program pr27;

uses crt;

const m=5; n=8;

type stroka = Array[1..n] of real;

matr = array[1..m] of stroka;

stolb = array[1..m] of real;

var x:matr; b:stroka; sr:stolb; p,min:real;

i,j,k,nmin:integer; z:char;

begin clrscr;

for i:=1 to m do begin

WRITELN('УВЕДИ ',N,' ЧИСЕЛ ',I,'-Ого РЯДКА');

FOR J:=1 TO N DO READ(X[I,J]); END;

WRITELN(' ':10,'ВИХІДНА МАТРИЦЯ ');

FOR I:=1 TO M DO BEGIN

FOR J:=1 TO N DO WRITE(X[I,J]:7:1);

WRITELN;END;

{ОБЧИСЛЕННЯ СЕРЕДНІХ ГЕОМЕТРИЧНИХ}

for i:=1 to m do

begin

b:=x[i]; p:=1; k:=0;

for j:= 1 to n do

if b[j]>0 then

begin p:=p*b[j];k:=k+1; end;

if k>0 then sr[i]:=exp(ln(p)/k) else sr[i]:=-1;

END; {FOR}

{ПОШУК МІНІМАЛЬНОГО ЕЛЕМЕНТА}

min:=1E20;

for i:= 1 to m do

if( sr[i]<min) and (sr[i]>0) then

BEGIN MIN:=SR[I];NMIN:=I; END;

WRITELN;WRITELN(' ':5,' РЕЗУЛЬТАТИ РОЗРАХУНКУ');

FOR I:=1 TO M DO

WRITELN('СЕР.ГЕОМ .',I,'-Ого РЯДКА=',SR[I]:7:2);

FOR I:= 1 TO 34 DO WRITE(' = ');

WRITELN;

WRITELN('МІНІМАЛЬНЕ СЕРЕДНЄ = ',MIN:7:2);

WRITELN('НОМЕР РЯДКА = ',NMIN:2);

z:=readkey

end.

Приклади виконання завдання 2 лабораторної роботи

Приклад 28. Обчислити добуток від множення суми додатних елементів головної діагоналі на суму непарних елементів побічної діагоналі матриці А(6,6).

Програма має вид

program pr28;

uses crt;

const n=6;

type raz=1..n;

matr=array[raz,raz] of integer;

var a:matr; p,s1,s2,i,j:integer; z:char;

BEGIN CLRSCR;

FOR I:=1 TO N DO BEGIN

WRITELN('УВЕДИ ',N,' ЧИСЕЛ ',I,'-Ого РЯДКА');

FOR J:=1 TO N DO READ(A[I,J]); END;

CLRSCR;

WRITELN(' ':10, 'ВИХІДНА МАТРИЦЯ ');

for i:=1 to n do begin

for j:=1 to n do

write(a[i,j]:5); WRITELN;END;

{ОБЧИСЛЕННЯ СУМИ ДІАГОНАЛЕЙ}

s1:=0; s2:=0;

for i:=1 to n do

begin j:= n+1-i;

if a[i,i] > 0 then s1:=s1+a[i,i];

if a[i,j] MOD 2 <> 0 then s2:=s2+a[i,j];

end;

{ОБЧИСЛЕННЯ ДОБУТКУ}

P:=S1*S2;

WRITELN;WRITELN(' ':10,'РЕЗУЛЬТАТИ РОЗРАХУНКУ ');

WRITELN('СУМА ДОД. ЕЛ. ГОЛ. ДІАГОНАЛІ=',S1:4);

WRITELN('СУМА НЕП. ЕЛ. ПОБ. ДІАГОНАЛІ=',S2:4);

WRITELN(' ЇХНІЙ ДОБУТОК = ',P:4);

z:=readkey

end.

Приклад 29. Знайти максимальний елемент побічної діагоналі матриці X(5,5) і вивести на друк весь стовпець, у якому він знаходиться.

Програма має вид:

program pr29;

uses crt;

const n=5;

type raz=1..n;

matr=array[raz,raz] of real;

var x:matr; max:real; i,j,jmax:raz; z:char;

BEGIN CLRSCR;

FOR I:=1 TO N DO BEGIN

WRITELN('УВЕДИ',N,'ЧИСЕЛ ',I,'-ОГО РЯДКА');

FOR J:= 1 TO N DO READ(X[I,J]);

END;

CLRSCR;

WRITELN(' ':5, 'ВИХІДНА МАТРИЦЯ ');

for i:=1 to n do begin

for j:=1 to n do

write(x[i,j]:5:1);

writeln; end;

{ПОШУК МАКСИМАЛЬНОГО ЕЛЕМЕНТА}

max:=-1e20;

for i:=1 to n do

begin j:=n+1-i;

if x[i,j]>max then

begin max:=x[i,j];jmax:=j; end;

END;

{ВИВІД ЗНАЙДЕНОГО СТОВПЦЯ}

WRITELN; WRITELN(' МАКС. ЕЛЕМЕНТ=',MAX:5:1);

WRITELN('СТОВПЕЦЬ З МАКС. ЕЛ. ',jmax:2);

for i:=1 to n do

writeln(' ':10,x[i,jmax]:5:1);

z:=readkey

end.