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

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

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

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

Кафедра ИТАС

ОТЧЕТ

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

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

Вариант___27______

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

__Хомич_ ____________

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

___________ ____________

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

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

Москва 2005

Содержание c.

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

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

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

Тесты 5

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

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

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

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

Тесты 9

3.Третья часть:

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

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

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

Тесты 14

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

Цель работы:

Использование процедур и функций.

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

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

1.Оформить в виде функции общую часть в предложенных функциях:

a=v√v2-r2 / 2 – r2 / 2*ln|v|+√v2-r2

k=(x2-b2)7/2 / 7 + 2b2(x2-b2)5/2 / 5 + b4(x2-b2)3/2 / 3

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

Дано:v, r, x, b – real, заданные числа;

Результат:a, k –real, полученные выражения.

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

НАЧАЛО

Функция t(v,r:real);

t:=sqrt(v*v-r*r);

КФ

Ввод(v,r);

a:=v*t(v,r)/((2-r*r)*(2*ln(abs(v))+t(v,r)));

k:=sqr(w)*t(v,r)/7+2*r*r*w*sqr(t(v,r))/5+r*r*r*r*w/3;

Вывод(a,k)

КОНЕЦ

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

program diez1;

uses crt;

var k,w,a,b,v,r,x: real;

n,i:integer;

function t (v,r:real): real;

begin

t:=sqrt(v*v-r*r);

end;

begin

clrscr;

repeat

write('Введите v>r ');

readln(v,r)

until (r*r<>2) and (v>r);

a:=v*t(v,r)/((2-r*r)*(2*ln(abs(v))+t(v,r)));

writeln('Введите x>b');

repeat

readln(v,r);

until v>r;

w:=t(v,r)*sqr(t(v,r));

k:=sqr(w)*t(v,r)/7+2*r*r*w*sqr(t(v,r))/5+r*r*r*r*w/3;

writeln('a=',a:8:2);

writeln('k=',k:8:2);

readln;

end.

Тесты.

1.Ввод неверного x и y:

Введите v>r : 0 3

Введите v>r : -1 5

Введите v>r : 7 3

Введите x>b : 5 1

a= -0.62

k= 10842.70

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

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

1. Вычислить G=min(max(abs(Bi,j))),где Bi,j-элементы квадратной матрицы n-ого порядка. j i

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

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

n – integer, размер матрицы;

Результат: min – integer, минимальный элемент столбца среди максимальных по абсолютной величине эл-ов строки.

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

НАЧАЛО

Функция GG (n:byte;var B:matr):integer;

minj:=32767;

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

maxi:=B[1,j];

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

Если abs(B[i,j])>abs(maxi) то

maxi:=B[i,j];

Если maxi<minj то minj:=maxi;

Все

КЦ

gg:=minj;

КФ

G:=gg(n,B); Вывод (G);

Все

КОНЕЦ.

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

program diez2;

uses crt;

type matr=array[1..10,1..10] of integer;

var B:matr;

n,i,j:byte;

G:integer;

function GG(n:byte;var B:matr):integer;

var i,j:byte;

minj,maxi:integer;

begin

minj:=32767;

for j:=1 to n do

begin

maxi:=B[1,j];

for i:=2 to n do

if abs(B[i,j])>abs(maxi) then

maxi:=B[i,j];

if maxi<minj then minj:=maxi;

end;

gg:=minj;

end;

BEGIN clrscr;

writeln('Программа ищет минимальный эл-т столбца среди максимальных по абс. величине эл-ов столбца'); repeat

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

read(n);

until(n>0) and (n<=10);

writeln('Введите эл-ты матрицы');

for i:=1 to n do

for j:=1 to n do

read(B[i,j]);

for i:=1 to n do

begin

for j:=1 to n do

write(B[i,j]:5);

writeln;

end;

G:=gg(n,B); write('G= ',G); readkey;

end.

Тесты

1.Нормальная работа:

Введите 0<n<=10 - размер матрицы: 3

Введите эл-ты матрицы:

5 98 1

-100 5 32

0 21 -54

G= -100

Третья часть.

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

Дан целочисленный массив A[1..n]:

  1. Посчитать количество повторений каждого элемента.

  2. Сформировать новый массив, состоящий из элементов, которые повторяются в заданном массиве.

Пример:

{1,8,5,1,0,8,7,36,8} {1,8,1,8,8}

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

Дано:C [1:n] – array of integer, заданный массив;

n – integer, размер матрицы;

Результат: b – array of integer, массив, состоящий из повторяющихся элементов заданного;

kol – array of integer, массив состоящий из всех элементов заданного без повторений;

sum – array of integer, массив, состоящий из количества повторений каждого элемента заданного массива.

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

Процедура form(c:mass);

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

f:=false

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

Если (c[i]=c[j]) и (i<>j) и (f=false) то

b[k]:=c[i]

f:=true

k:=k+1

Все

Кц

Кц

КП

Процедура kolvo(c:mass);

l:=0

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

j:=1

Цикл пока (j<=l) и ((c[i]<>kol[j])) или (i=j)

j:=j+1

Кц

Если j>l то

l:=l+1

kol[l]:=c[i];

sum[l]:=1;

Иначе

sum[j]:=sum[j]+1

Все

Кц

КП

НАЧАЛО

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

form(c)

kolvo(c)

Вывод(b,kol,sum)

КОНЕЦ

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

Program diez3;

uses crt;

type mass=array [1..20] of integer;

var c,b,kol,sum:mass;

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

f:boolean;

procedure form(c:mass);

Begin

k:=1;

For i:=1 to n do begin

f:=false;

For j:=1 to n do

if (c[i]=c[j]) and (i<>j) and (f=false) then

begin

b[k]:=c[i];

f:=true;

k:=k+1;

end;

end;

end;

procedure kolvo(c:mass);

var i,j:integer;

begin

l:=0;

for i:=1 to n do

begin

j:=1;

while (j<=l) and ((c[i]<>kol[j])) or (i=j) do

j:=j+1;

If j>l then begin

l:=l+1;

kol[l]:=c[i];

sum[l]:=1;

end else sum[j]:=sum[j]+1;

end;

end;

Begin

clrscr;

repeat

write(Введите количество элементов массива: ');

read(n);

until n>2;

write(Введите сами элементы: ');

For i:=1 to n do

read(c[i]);

form(c);

kolvo(c);

writeln('Массив имеет вид:');

for i:=1 to k-1 do

write(b[i]:3);

writeln;

writeln(‘Повторения:’);

write('Элемент ');

for i:=1 to l do

write(kol[i]:5);

writeln;

write(‘Количество повторений ');

for i:=1 to l do

write(sum[i]:5);

readkey

end.

Тесты

1.Пример из задания(массив с повторениями,нормальная работа):

Введите количество элементов массива: 9

Введите сами элементы: 1 8 5 1 0 8 7 36 8

Массив имеет вид

1 8 1 8 8

Повторения

Элемент 1 8 5 0 7 36

Количество повторений 2 3 1 1 1 1

2.Массив без повторений:

Введите количество элементов массива: 4

Введите сами элементы: 1 2 3 4

Массив имеет вид

Повторения

Элемент 1 2 3 4

Количество повторений 1 1 1 1

14

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