Скачиваний:
7
Добавлен:
20.05.2014
Размер:
76.29 Кб
Скачать

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

ЭЛЕКТРОНИКИ И МАТЕМАТИКИ

(технический университет)

Кафедра ИТАС

ОТЧЕТ

ПО ЛАБОРАТОРНОМУ ПРАКТИКУМУ

по дисциплине “Алгоритмические языки и программирование”

Вариант___27______

Исполнитель Руководитель

__Хомич _ ____________

(фамилия) (фамилия)

___________ ____________

(подпись) (подпись)

Группа___АП-11____

Москва 2005

Содержание

1.Первая часть:

Постановка задачи, Внешняя спецификация 2

Алгоритм на псевдокоде 3

Листинг программы 4

Тесты 5

2.Вторая и третья части:

Постановка задачи, Внешняя спецификация 5

Алгоритм на псевдокоде 5

Листинг программы 6

Тесты 7

3.Четвертая часть:

Постановка задачи, Внешняя спецификация 8

Алгоритм на псевдокоде 8

Листинг программы 9-10

Тесты 11

Самостоятельная работа №3

Цель работы:

Алгоритмы вычисления по итерационным формулам. Алгоритмы обработки матриц.

Первая часть.

Постановка задачи:

1.Вычислить сумму членов бесконечного ряда, для заданного Eps:

Q=cos(2x)/(1*3) + cos(4x)/(3*5) + cos(6x)/(5*7) + ...

С точностью до |ai|<= Eps;

Внешняя спецификация:

Дано: x, Eps – real, заданы в задаче;

Результат:Q – real, сумма бесконечного ряда.

Алгоритм на псевдокоде

Алгоритм задача3.1;

НАЧАЛО

Ввод(x,Eps)

K:=1

Q:=(cos(2*k*x))/((1+2*(k-1))*(1+2*k))

y:=Q

Цикл пока abs(y)>Eps

K:=k+1

y:=cos(2*k*x)/((1+2*(k-1))*(1+2*k))

Q:=Q+y

КЦ

Вывод сообщения(Q)

КОНЕЦ.

Листинг программы

Program laba3;

uses crt;

var k:integer;

x,Q,y,Eps:real;

begin

clrscr;

writeln(' Pervaya Chast');

writeln('Vvedite x ');

read(x);

repeat

writeln('Vvedite Eps bolshe 0');

read(Eps);

until eps>0;

K:=1;

Q:=(cos(2*k*x))/((1+2*(k-1))*(1+2*k));

y:=Q;

while abs(y)>Eps do begin

K:=k+1;

y:=cos(2*k*x)/((1+2*(k-1))*(1+2*k));

Q:=Q+y;

end;

writeln('summa=',Q:10:3,' tekyshii chlen=',y:10:3,' Ego nomer v ryade=',k);

readkey

end.

Тесты

1.Попытка ввести отрицательный Eps:

Vvedite x:

2

Vvedite Eps bolshe 0:

-2

Vvedite Eps bolshe 0:

0.003

summa= -0.092 tekushii chlen= 0.002 Ego nomer v ryade=8

Вторая и третья части.

Постановка задачи:

2.В заданной целочисленной матрице A[1:n,1:n] найти, используя методы сортировки:

Четыре минимальных по абсолютной величине элемента в первом столбце.

3.В матрице A[1:n,1:n] вычислить:

Произведение максимального элемента на минимальный среди среди элементов, расположенных под главной диагональю.

Внешняя спецификация:

Дано: A[1:n,1:n] - array [1..n,1..n] of integer,заданная матрица;

Результат: A[n-4..n] – integer, четыре минимальных по абсолютной величине элемента в первом столбце.

max,min,max*min – integer, максимум, минимум и их произведение соответственно

среди элементов, расположенных под главной диагональю.

Алгоритм на псевдокоде

НАЧАЛО задачи 3.2, 3.3

Ввод(n,A[1:n,1:n])

повторять

f:=true;

Цикл от j:=1 до n-1

Если abs(a[1,j]) < (a[1,j+1]) то

f:=false;

ob:=a[1,j];

a[1,j]:=a[1,J+1];

a[1,j+1]:=ob;

Все

до тех пор пока f;

Кц

i:=1;

Цикл от j:=n-3 до n

Вывод сообщения(A[i,j]:6);

Кц

max:=-32756;

min:=32757;

Цикл от i:=2 до n

Цикл от j:=i-1 вниз до 1

Если A[i,j]>max то max:=A[i,j]

Все

Если A[i,j]<min то min:=A[i,j]

Все

Кц

Вывод сообщения(min,max,min*max);

КОНЕЦ

Листинг программы

program Vozvrashenie_Terminatora;

uses crt;

var

flag:boolean;

i,j,n,k,max,min,ob:integer;

f:boolean;

A:array[1..100,1..100] of integer;

begin

clrscr;

writeln(' Вторая часть');

repeat

writeln('Введите n >= 4 - размер матрицы');

read(n);

until n>=4;

writeln('Введите саму матрицу');

for i:=1 to n do

for j:=1 to n do

read(A[i,j]);

for j:=1 to n do

begin

for i:=1 to n do

write(a[i,j]:6);

writeln;

end;

readkey;

repeat

f:=true;

for j:=1 to n-1 do

if abs(a[1,j]) < (a[1,j+1]) then

begin

f:=false;

ob:=a[1,j];

a[1,j]:=a[1,J+1];

a[1,j+1]:=ob;

end;

until f;

writeln('Четыре минимальных по абсолютной величине элемента первого cтолбца матрицы'); i:=1;

for j:=n-3 to n do

write(a[i,j]:6);

writeln;

readkey;

writeln(' Третья часть');

max:=-32756;

min:=32757;

For j:=2 to n do

For i:=j-1 downto 1 do begin

if A[i,j]>max then max:=A[i,j];

if A[i,j]<min then min:=A[i,j];

end;

writeln('min и max:',min:6,max:6,' произведение',min*max:6);

end.

Тесты

1.Попытка ввести размерность матрицы меньше четырех:

Вторая часть

Введите n >= 4 - размер матрицы: 1

Введите n >= 4 - размер матрицы:4

Введите саму матрицу:

9 2 -8 66 31

5 0 -32 -21 1

4 8 64 -6 13

2 65 10 -47 10

-1 -4 98 5 21

Четыре минимальных по абсолютной величине элемента первого cтолбца матрицы:

5 4 2 -1

Третья часть

min и max: -4 98 произведение: -392

Четвертая часть.

Постановка задачи:

4.Дана матрица C[1:n,1:n]:

Упорядочить элементы в каждом столбце матрицы по возрастанию, а сами столбцы расположить по убыванию произведения элементов столбцов;

Внешняя спецификация:

Дано: C[1:n,1:n] - array [1..n,1..n] of integer, заданная матрица;

Результат: C[1:n,1:n] - array [1..n,1..n] of integer, упорядоченная по заданным правилам матрица.

Алгоритм на псевдокоде

НАЧАЛО задача3.4

Ввод(n,C[1:n,1:n])

{Упорядочиваем элементы в каждой строке}

Цикл от i:=1 до n

Цикл

t:=true

Цикл от j:=1 до n-1

Если C[i,j]>C[i,j+1] то

t:=false

ob:=c[i,j]

C[i,j]:=C[i,J+1]

C[i,j+1]:=ob

Все

Кц

до t=true

Кц

Кц

{В одномерный массив записываем кол-во отрицательных элементов в

строках нашей матрицы}

Цикл от i:=1 до n

Цикл от j:=1 до n

Если C[i,j]<0 то d[i]:=d[i]+1

Все

Кц

Кц

{Меняем строки местами, опираясь на сведения полученного одномерного массива}

Цикл от i:=1 до n-1

Цикл от j:=i+1 до n

Если D[i]<d[j] то

Цикл от l:=1 до n

ch:=C[j,l]

C[j,l]:=C[i,l]

C[i,l]:=ch

Кц

ob:=d[j]

d[j]:=d[i]

d[i]:=ob

Все

Кц

Кц

Вывод сообщения(C[1:n,1:n])

КОНЕЦ

Листинг программы

Program laba3chast4;

Uses crt;

Var c:array [1..100,1..100] of integer;

D:array [1..10] of integer;

i,j,k,n,l,ob,ch:integer;

t:boolean;

Begin

clrscr;

writeln('Chetvertaya chast');

repeat

Writeln('vvodim n > 0');

read(n);

until n>0;

writeln('Teper matricy');

For i:=1 to n do

For j:=1 to n do begin

write(' C[',i,',',j,']= ');

read(C[i,j]);

end;

writeln('Teper vivedem ety matricu');

For i:=1 to n do begin

For j:=1 to n do

write(C[i,j]:6);

writeln;

writeln;

end;

readkey;

{Упорядочиваем элементы в каждой строке}

For i:=1 to n do begin

repeat

t:=true;

for j:=1 to n-1 do

if C[i,j]>C[i,j+1] then begin

t:=false;

ob:=c[i,j];

C[i,j]:=C[i,J+1];

C[i,j+1]:=ob;

end;

until t=true;

end;

{В одномерный массив записываем кол-во отрицательных элементов в

строках нашей матрицы}

For i:=1 to n do

For j:=1 to n do if C[i,j]<0 then d[i]:=d[i]+1;

{Меняем строки местами, опираясь на сведения полученного одномерного массива}

For i:=1 to n-1 do

For j:=i+1 to n do

if D[i]<d[j] then begin

for l:=1 to n do begin

ch:=C[j,l];

C[j,l]:=C[i,l];

C[i,l]:=ch;

end;

ob:=d[j];

d[j]:=d[i];

d[i]:=ob;

end;

writeln('Vivod yporyadochennoi matrici');

For i:=1 to n do begin

For j:=1 to n do

write(C[i,j]:6);

writeln;

writeln;

end;

readkey

end.

Тесты

1.Попытка ввода неверного N:

Chetvertaya chast

vvodim n > 0

-1

vvodim n > 0

0

vvodim n > 0

4

Teper matricy

C[1,1]= 1

C[1,2]= 2

C[1,3]= 3

C[1,4]= -5

C[2,1]= -4

C[2,2]= -7

C[2,3]= -12

C[2,4]= -31

C[3,1]= -3

C[3,2]= 15

C[3,3]= -6

C[3,4]= 12

C[4,1]= 51

C[4,2]= -5

C[4,3]= -4

C[4,4]= -7

Teper vivedem ety matricu

1 2 3 -5

-4 -7 -12 -31

-3 15 -6 12

51 -5 -4 -7

Vivod yporyadochennoi matrici

-31 -12 -7 -4

-7 -5 -4 51

-6 -3 12 15

-5 1 2 3

11

Соседние файлы в папке Отчеты по проге паскаль вариант 27