Реферат Вычислительная практика I курс
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Смаль Дмитрий, АС-14
Тема: «Процедуры и функции»
Работа №4(1)
1. Постановка задачи: Вариант 10: Описать функцию MAX( A, n, k ), где A-матрица, а n и k индексы (n<k), вычисляющую наибольший элемент заштрихованной области матрицы A
n k
n
k
2. Тестовые примеры:
1) Пусть размерность матрицы 6x8, а n=2 и k=5, тогда: 1 2 7 8 1 3 5 6
6 1 7 15 21 3 1 5
5 1 0 1 2 3 4 9
6 9 3 5 8 1 2 1
7 1 3 51 2 4 6 8
6 1 1 65 1 1 1 1
максимальный элемент в заштрихованной части 65.
2) Пусть размерность матрицы 5x5, а n=1 и k=5, тогда: 9 15 0 3 4
6 7 1 8 9
25 33 1 0 2
2 4 7 5 6
1 0 3 2 1
максимальный элемент в заштрихованной части 33.
3) Пусть размерность матрицы 5x5, а n= - 2 и k=5, тогда пропадает смысл заштрихованной области.
3. Схема алгоритма (см. Приложение №1)
4. Распечатка текста программы:
Program Proc_1;
Uses crt;
Type E=INTEGER;
ATYPE=ARRAY[1..30,1..30] OF E;
Var k,n,R,C:E;
a:ATYPE;
Procedure Enter;
Var i,j:BYTE;
begin
Writeln(‘Введите матрицу’);
For i:=1 to R do
For j:=1 to C do
Read(a[i,j]);
end;
Function MAX (B:ATYPE;n,k:WORD):E;
Var i,j:Word;
m:E;
begin
m:=B[1,n+1];
For i:=1 to n do
For j:=n+1 to k-1 do
If B[i,j]>m
then m:=B[i,j];
For i:=n+1 to k-1 do
For j:=1 to C do
If B[i,j]>m
then m:=B[i,j];
For i:=k to R do
For j:=n+1 to k-1 do
If B[i,j]>m
then m:=B[i,j];
MAX:=m
end;
Begin
clrscr;
Writeln(‘Введите размерность матрицы R,C:);Readln(R);Readln(C);
Writeln('Введите n:'); Readln(n); Writeln('Введите k:'); Readln(k);
If (n>=0) and (k>=0) and (R>2) and (C>2) then
begin
Enter;
Writeln('Максимальный элемент MAX: ',MAX(a,n,k))
end
else Writeln('Введите n>0 и k>0 и R>2 и C>2');
End.
5. Тестовые примеры:
1) Введите размерность матрицы R,C: 3) Введите размерность матрицы R,C:
6 0
8 5
Введите n Введите n
1 0
Введите k Введите k
5 3
Введите матрицу Введите n>0 и k>0 и R>2 и C>2
1 2 7 8 1 3 5 6
6 1 7 15 21 3 1 2
5 1 0 1 2 3 4 9
6 9 3 5 8 1 2 1
7 1 3 51 2 4 6 8
6 1 1 65 1 1 1 1
Максимальный элемент MAX: 65
2) Введите размерность матрицы R,C:
5
5
Введите n
1
Введите k
5
Введите матрицу
9 15 0 3 4
6 7 1 8 9
25 33 1 0 2
2 4 7 5 6
1 0 3 2 1
Максимальный элемент MAX: 33
Приложение №1:
НЕТ
|
Процедура ввода матрицы
Для
i
от 1 до
R
Для
j
от 1 до
C
j
i
|
Эл-та в заштрихованной части
матрицы
Для i от 1 до n
Для j от n+1 до k-1
НЕТ
|
j
i
Для i от n+1 до k-1
Для j от 1 до C
НЕТ
|
j
i
Для i от k до R
Для j от n+1 до k-1
НЕТ
ДА
j
i
|
Работа №4(2)
- Постановка задачи: Вариант № 8: Даны координаты вершин прямоугольника и координаты точки. Определить лежит ли эта точка внутри прямоугольника и если лежит, определить минимальное расстояние от этой точки до сторон прямоугольника.
- Тестовые примеры:
1) Если вершины прямоугольника заданы координатами: A(0;0), B(0;6), C(8,6), D(8,0). А точка задана координатами E(3;1), то точка будет лежать внутри прямоугольника, а минимальное расстояние будет равно 1.
2) Если вершины прямоугольника заданы координатами: A(0;0), B(0;5), C(10;5), D(10;0). А точка задана координатами E(4;2), то точка будет лежать внутри прямоугольника, а минимальное расстояние будет равно 2
3) Если вершины прямоугольника заданы координатами A(2,2), B(2,15), C(10;15), D(10;2). А точка задана координатами E(34;67), то точка будет лежать вне прямоугольника и минимальное расстояние до сторон определить невозможно.
- Схема алгоритма(см. Приложение №2)
- Распечатка текста программы:
Program Proc_2;
Uses crt;
Type E=INTEGER;
Var x,y:E;
t,b:BOOLEAN;
x1,x2,x3,x4,y1,y2,y3,y4:E;
w,g,d,f:E;
Function Nahozhdenie (x,y:INTEGER):BOOLEAN;
Var n:BOOLEAN;
begin
If (x1<x) and (x<abs(x4)) and (y1<y) and (y<y2)
then n:=TRUE
else n:=false;
Nahozhdenie:=n;
end;
Procedure Rasstoyanie;
begin
w:=abs(y2-y);
d:=abs(x2-x);
f:=abs(x4-x);
g:=abs(y1-y);
If (w<g) and (d<f) then
begin
If w<d
then Writeln(w)
else Writeln(d)
end
else If g<f then
Writeln(g)
else Writeln(f);
end;
Begin
clrscr;
Writeln('Введите коорд-ты вершин прямоуг, стороны которого');
Writeln(' параллельны координатным осям. ');
Read(x1,x2,x3,x4,y1,y2,y3,y4);
Writeln('Введите координаты точки:');
Read(x,y);
Write('Точка лежит внутри прямоугольника ? ');
Write(Nahozhdenie(x,y));
t:=Nahozhdenie(x,y);
writeln;
If t=True
then begin
Write('Минимальное расстояние: ');Rasstoyanie;
end
else
Writeln('Точка вне прямоугольника, мин. расст. Опр-ть невозм.');
End.
- Результаты тестирования:
1) Введите коорд-ты вершин прямоугольника, стороны которого
параллельны осям координат
0 0 8 8 0 6 6 0
Введите координаты точки
3 1
Точка лежит внутри прямоугольника ? TRUE
Минимальное расстояние: 1
2) Введите коорд-ты вершин прямоугольника, стороны которого
параллельны осям координат
0 0 10 10 0 5 5 0
Введите координаты точки
4 2
Точка лежит внутри прямоугольника ? TRUE
Минимальное расстояние: 2
3) Введите коорд-ты вершин прямоугольника, стороны которого
параллельны осям координат
2 2 10 10 2 15 15 2
Введите координаты точки
34 67
Точка лежит внутри прямоугольника ? FALSE
Точка вне прямоугольника опр. минимальное расст. опр-ть. невозможно
Ввод координат вершин
прямоугольника
|
Определяем лежит ли точка внутри
прямоугольника
НЕТ
|
Функция определяющая лежит ли
Точка внутри прямоугольника
НЕТ
|
|
|
Процедура, определяющая
наименьшее расстояние до
сторон прямоугольника
НЕТ
НЕТ ДА
НЕТ
ДА
ДА