ребята, кому не трудно помогите программку составить:
Задание: протабулируйте функцию:
y={в системе два уравнения:
e^x, 0≤x≤1
√(x*b), 1<x≤2
с шагом dx=0.2 где b-сумма всех элементов массива (A1,...,A10) вещественного типа. Сумму вычислите с помощью функции
протабулируйте функцию
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
- Naeel Maqsudov
- Сообщения: 2551
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Код: Выделить всё
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.
Фак по оптимизации: в SumOfArray переменная S не нужна. Заместо нее можно использовать имя функции. В паскале/дельфи, технически, использование имени функции в ее теле равносильно использованию локальной переменной. Да и для компилятора SumOfArray или S в данном случае ничем не отличаются и даже в памяти находятся совсем рядом.
It's a long way to the top if you wanna rock'n'roll
Program1.pas(21) : Нельзя преобразовать тип ^real к integer в этом моменте arr:=arr+1;
В паскале математические операции с указателями выполняются с помощью inc или dec.
It's a long way to the top if you wanna rock'n'roll