Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Белорусский государственный университет,
Механико-Математический Факультет
Кафедра веб-технологий и компьютерного моделирования
Отчет
По вычислительной практике
Задание №13(2)
“Графики и фигуры в текстовом режиме”
Студентка 2 курс, 3 группа БГУ
Евтух В.Н.
Руководитель Расолько Г.А.
Минск, 2013
Условие:
Напечатать таблицу значений и график для функции Sin(x) и все в текстовом режиме с помощью простейших процедур.
Алгоритм решения в виде последовательности действий :
1) процедура TabulFunc находит значения у в точках х. Их n штук на заданном промежутке. Эта функция записывает все значения у в массив у.
2) процедура ShowTabul печатает х, а рядом значение у в этом х в виде таблицы.
3) процедура Help включает в себя процедуру MaxMin, которая находит максимальное и минимальное значения функции. Сама же процедура Help «расставляет точки на графике», вычисляя, по сути, их координаты.
4) процедура ShowTabulGraph рисует график и ось.
5)основная программа вызывает все эти процедуры.
Программа:
program zadanie2;
Uses CRT;
const n=25;
ShP=60;
a=-1.57;
b=0;
Type
mass=array[1..n] of real;
Func=function(x:real):real;
function f(x:real):real;
Far;
begin
f:=Sin(x);
end;
Procedure TabulFunc(a,b:real;n:word; f:Func; var y:mass);
var x,h:real; i:integer;
begin
x:=a;
h:=(b-a)/n;
for i:=1 to n do
begin
y[i]:=f(x);
x:=x+h;
end;
end;
Procedure ShowTabul(a,b:real;n:word; var y:mass);
var x,h:real; i:integer;
begin
x:=a;
h:=(b-a)/n;
writeln(' x | y |');
for i:=1 to n do
begin
writeln(x:5:2, '|', y[i]:6:2,'|');
x:=x+h;
end;
end;
Procedure Help(y:mass;n:word; var no:word; var hy:real);
Var Ma,Mi,ampl:real;
procedure MaxMin(var Max,Min:real);
var i:integer;
begin
Max:=y[1];
Min:=Max;
For i:=2 to n do
if Max<y[i] then Max:=y[i]
else
if Min>y[i] then Min:=y[i];
end;
begin
MaxMin(Ma,Mi);
if Mi>=0 then begin no:=1; hy:=ShP/Ma; end
else
if Ma<=0 then begin no:=ShP; hy:=-ShP/Mi; end
else begin ampl:=Ma-Mi; hy:=(ShP-1)/ampl; no:=trunc(-Mi*hy)+1; end;
writeln(no:14, hy:14:4);
end;
Procedure ShowTabulGraph(a,b:real;n:word; var y:mass; no:word; hy:real);
var x,h:real;
i,ny:integer;
c:string[ShP];
begin
x:=a;
h:=(b-a)/n;
c:=' ';
writeln(' x ', '|',' y ', '| c ');
writeln(no, hy);
for i:=1 to n do
begin
c[no]:='|';
ny:=trunc(y[i]*hy+no+1);
c[ny]:='*';
writeln(x:5:2,'|', y[i]:6:2,'|', ny:3, c:ShP+2);
c[ny]:=' ';
x:=x+h;
end;
end;
var y:mass;
no:word;
hy:real;
begin
clrscr;
TabulFunc(a,b,n,f,y);
ShowTabul(a,b,n,y);
Help(y,n,no,hy);
ShowTabulGraph(a,b,n,y,no,hy);
readln;
end.