Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2010, 17:21   #1
<Maria>
Пользователь
 
Аватар для <Maria>
 
Регистрация: 12.10.2010
Сообщений: 11
Вопрос Процедурный тип в Delphi

Есть задание: "С помощью одной процедуры протабулировать сумму, разницу, произведение пар функций на отрезке [0, 1] с шагом 0.2 функции:f(x) = x, f(x) = sin(x), f(x) = cos(x)"
Я попыталась что-то изобразить, вот что получилось:
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  math;

const min=0;
      max=1;
      shag=0.2;


function F1(X: Double): Double;
begin
  Result :=x;
end;

function F2(X: Double): Double;
begin
  Result :=sin(x);
end;

function F3(X: Double): Double;
begin
  Result :=cos(x);
end;

type
  TFunc = function (X: Double): Double;


var i, j, koliter: integer;
    tmp,x:real;
    F: TFunc;
begin
   tmp:=(max-min)/shag;
   koliter:=round(tmp);

    x:=min;
        write('x= ');
         for i:=1 to koliter+1 do
         begin
             write(x:5:1);
             x:=x+shag;
         end;
  Writeln;
  F := f1;
  Write('f1 = ');
  for i:=1 to koliter+1 do
  begin
  x:=x+shag;
  Write(F(x):5:2);
  end;

  Writeln;
  F := f2;
  Write('f2 = ');
  for i:=1 to koliter+1 do
  begin
  x:=x+shag;
  Write(F(x):5:2);
  end;

  Writeln;
  F := f3;
  Write('f3 = ');
  for i:=1 to koliter+1 do
  begin
  x:=x+shag;
  Write(F(x):5:2);
  end;
  writeln;

  Readln;
end.
Но это только начало (или вообще не то), может кто-то подскажет, как действовать дальше...
Буду благодарна за любую информацию
<Maria> вне форума Ответить с цитированием
Старый 14.11.2010, 18:03   #2
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
С помощью одной процедуры
Поэтому и надо делать с помощью одной процедуры. Например:
Код:
procedure print(fun1,fun2 :TFunc;step,left,right:real);
  begin
  //===========умножение=========
  writeln('   x    |  f1(x)*f2(x)   ');

    while(left<=right) do
    begin
       writeln(left, '  ',fun1(left)*fun2(left));
       left:=left+step;
    end;
  //==========сумма и разность аналогично===  

  end;
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедурный тип в C++Builder sneksnek2006 C++ Builder 4 14.10.2010 10:46
Процедурный Brainfuck tunyash Софт 0 17.06.2010 08:55
Процедурный тип в паскале tanyhaftv Помощь студентам 0 24.03.2010 09:07
Логический тип(Delphi 7) matrix8325 Помощь студентам 1 22.04.2009 00:18
Перевести тип String в тип PChar (Delphi 7) ScorpioN_T Помощь студентам 2 28.10.2008 22:13