протабулируйте функцию

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
frol55
Сообщения: 3
Зарегистрирован: 25 ноя 2013, 23:05

25 ноя 2013, 23:07

ребята, кому не трудно помогите программку составить:
Задание: протабулируйте функцию:
y={в системе два уравнения:
e^x, 0≤x≤1
√(x*b), 1<x≤2
с шагом dx=0.2 где b-сумма всех элементов массива (A1,...,A10) вещественного типа. Сумму вычислите с помощью функции
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

26 ноя 2013, 08:20

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

program p1;

type
  TArr = array[1..10] of real;
  PArr = ^Real;
var
  A:TArr;
  b:real;
  x:real;
const
  soA = trunc(SizeOf(TArr)/SizeOf(Real));
  step = 0.2;

function SumOfArray(arr:PArr; size:integer): real;
var
  i:integer; S:real;
begin
  S:=0;
  for i:=1 to size do begin
    S:=S+arr^;
    arr:=arr+1;
  end;
  SumOfArray:=S;
end;

function y(x:real; b:real):real;
begin
  if x<0 then begin
    halt(1);
  end else if x<=1 then begin
    y:=exp(x);
  end else if x<=2 then begin
    y:=sqrt(x*b);
  end else begin
    halt(1);
  end;
  
  
end;

begin
  A[1]:=94; A[2]:=20; A[3]:=1; A[4]:=2; A[5]:=-8;
  A[6]:=-9; A[7]:=34; A[8]:=2; A[9]:=5; A[10]:=-4;
  b:=SumOfArray(@A[1],soA);
  x:=0;
  while x<=2 do begin
    writeln ('X=',x,'    Y=', y(x,b));
    x:=x+step;
  end;
end.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

26 ноя 2013, 10:43

Фак по оптимизации: в SumOfArray переменная S не нужна. Заместо нее можно использовать имя функции. В паскале/дельфи, технически, использование имени функции в ее теле равносильно использованию локальной переменной. Да и для компилятора SumOfArray или S в данном случае ничем не отличаются и даже в памяти находятся совсем рядом.
It's a long way to the top if you wanna rock'n'roll
frol55
Сообщения: 3
Зарегистрирован: 25 ноя 2013, 23:05

27 ноя 2013, 09:08

arr:=arr+1;
frol55
Сообщения: 3
Зарегистрирован: 25 ноя 2013, 23:05

27 ноя 2013, 09:14

Program1.pas(21) : Нельзя преобразовать тип ^real к integer в этом моменте arr:=arr+1;
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

27 ноя 2013, 09:27

В паскале математические операции с указателями выполняются с помощью inc или dec.
It's a long way to the top if you wanna rock'n'roll
Ответить