Табулирование функции

Ответить
satana666
Сообщения: 2
Зарегистрирован: 18 мар 2009, 22:59

Пожалуйста помогите написать 2 программы:

[удалено. осталось в другой теме]

2) Вычислить функции х^2.3 , tg(x) на отрезке [1.5 , 4.5] с шагом 0.1. Записать значения функций в файле в виде " x x^2.3 tg(x) ". Построить графики каждой функции в градуированной системе координат. Данные для графиков считать из файла.

Зарание спасибо!!!!
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

См. в разделе Алгоритмы
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

По идее drawgrafik рисует график любой функции. Переделай чтобы она не вызывала Func, а считывала абсциссу из файла. Если будет трудно - убери '|' из вывода. Черточки дорисуешь сам. Вообщем разомнись...

Код: Выделить всё

uses crt,graph;
const
    b=4.5;
    h=0.1;
var a:real;
    f:text;
    name:string;
    gd,gm:integer;

function Func(x:real;vibor:byte):real;
begin
 if (vibor<>1) and (vibor<>2) then
  begin
   writeln('Funkcia ne opredelenna!');
   readln;
   exit;
  end
  else
   begin
    case vibor of
     1:Func:=exp(2.3*ln(x));
     2:Func:=sin(x)/cos(x);
    end;
   end;
end;

procedure drawgrafik(aF,bF:real;vib:byte);
var x,dx,max,min,koef,hF,g:real;
    k,x0,y0:integer;
 begin
  hF:=aF;
  g:=bF;
  clearviewport;
  dx:=(bF-af)/639;
  x:=aF; max:=func(aF,vib); min:=func(aF,vib);
  for k:=1 to 640 do
   begin
    if func(x,vib)>max then max:=func(x,vib);
    if func(x,vib)<min then min:=func(x,vib);
    x:=x+dx;
   end;
  koef:=479/(max-min);
  x:=aF;
  moveto(0,round(479-koef*(func(aF,vib)-min)));
  for k:=1 to 639 do
   begin
    x:=x+dx;
    setbkcolor(black);
    setcolor(green);
    lineto(k,round(479-koef*(func(x,vib)-min)));
   end;
  x0:=round(639*aF/(aF-bF));
  line(x0,0,x0,479);
  y0:=round(479-479*(min/(min-max)));
  line(0,y0,639,y0);
  PutPixel(x0,y0,red);
  setcolor(white);
  OutTextXY(x0+3,y0+4,'0');
  OutTextXY(x0-10,6,'y');
  OutTextXY(615,y0+3,'x');
end;

begin
 clrscr;
 write('Vvedite imia i put faila: ');
 readln(name);
 assign(f,name);
 rewrite(f);
 writeln(f,' ------------------');
 writeln(f,'| x | x^2,3| tg(x) |');
 writeln(f,' ------------------');
 a:=1.5;
 while a<=b do
  begin
   writeln(f,'|',a:3:1,'|',Func(a,1):6:3,'|',Func(a,2):7:3,'|');
   a:=a+h;
  end;
writeln(f,' ------------------');

gd:=detect;
initgraph(gd, gm, '');
if graphresult <> grok then
 begin
  writeln('Oshibka pri zapuske graficheskogo rezhima!');
  readln;
  halt;
 end
 else
  begin
   DrawGrafik(1,50,2);
   readln;
   closegraph;
  end;
close(f);
end.
чуть не забыл: кинь в папку с программой сам модуль и драйвер.
Нет религии выше истины
Ответить