<...> Надо построить график функции котангенса. График должен отображать результаты расчетов, которые записаны на диске. Масштаб разметки осей кординат должен отвечать реальным результатам расчетов. Основную часть экрана должны занимать те четверти, в которых находится график.
volvo
8.10.2005 19:19
-jesika-, во-первых, тебе уже давали ссылку не программу, которая чертит практически любой график (достаточно просто поменять функцию на свою): Построение любого графика
Во-вторых, для того, чтобы построить график y = F(x), нужно КАК МИНИМУМ знать, в каких пределах изменяется x, чего из задания не видно...
Далее, каким именно образом результаты
Цитата
записаны на диске
? Это, кстати, тоже надо знать, чтобы отобразить их на графике. Здесь телепатов нету, давайте задание полностью.
-jesika-
10.10.2005 1:06
вот дополнение к заданиеюможет ето поможет понять его Диапазон значений [Pi/50,49*Pi/50] График должен быть начерчен линиэй вида _ . . _ . . _ . . _
Алгоритм построения функции: 1. протабулировать функц. На заданном интервале с целью определения макс и мин значения; 2. построить график функции за предварительно подсчитанными значений координат точек функции. 3. сделать разметку осей через некоторые промежутки табулирования Х и У.
volvo
10.10.2005 20:38
Ну, вот тебе набросок, попробуй разобраться, как он работает... Разметку осей сделай сама.
uses Graph;
const
Every = 2;
var
Table: array[1 .. 2, 1 .. 49 * Every] of real;
function max(a, b: real): real;
begin
max := a; if a < b then max := b;
end;
function Ctg(x: real): real;
beginif Abs(x) < 0.0001then Ctg := 1000else Ctg := Cos(x) / Sin(x);
end;
var
grDriver, grMode, ErrCode: Integer;
i: integer;
x, _max, _min: real;
scale_x, scale_y: real;
f: text;
begin
assign(f, 'cotan.txt');
rewrite(f);
_max := -maxint; _min := maxint;
for i := 1to49 * Every dobegin
Table[1, i] := (i - 24 * Every) * Pi / (50 * Every);
Table[2, i] := Ctg(i * Pi / (50 * Every));
if _max < Table[2, i] then _max := Table[2, i];
if _min > Table[2, i] then _min := Table[2, i];
writeln(f, 'x = ', Table[1, i]:10:4, ' ctg(x) = ', Table[2, i]:10:4)
end;
close(f);
grDriver := Detect;
InitGraph(grDriver, grMode,'');
ErrCode := GraphResult;
if ErrCode <> grOk thenbegin
Writeln('Graphics error:', GraphErrorMsg(ErrCode));
ReadLn; Halt(101)
end;
setcolor(red);
line(0, getmaxy div2, getmaxx, getmaxy div2);
line(getmaxx div2, 0, getmaxx div2, getmaxy);
scale_y := (getmaxy / 2) / max(abs(_min), abs(_max));
scale_x := getmaxx / (3 * 49 * Every * Pi / (50 * Every));
for i := 1to49 * Every dobegin
putpixel((getmaxx div2) + trunc(Table[1, i] * scale_x),
(getmaxy div2) - trunc(Table[2, i] * scale_y),
white);
end;
readln;
CloseGraph;
end.
Если хочешь увеличить плотность точек на графике, увеличивай константу Every (можно попробовать увеличить до 5 .. 10). В файле "COTAN.TXT" содержатся результаты вычисления котангенса...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.