Помощь - Поиск - Пользователи - Календарь
Полная версия: Массивы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Kaliban
Есть прога, где с помощью массива чисел по формулам определяются несколько переменных.
Нужно тоже самое провернуть с помощью динамических массивов. сможете переделать? код прилагается.

program mas6;
var f: array[1..8] of real;
sum,fmin,fmax,b1,b2,s,x: real;
i: integer;
t: text;
begin
assign(t, 'mas06.dan');
reset(t);
fmin:=1e30;
fmax:=-1e30;
for i:=1 to 8 do
begin
read(t,f[i]);
if f[i]<fmin then fmin:=f[i];
if f[i]>fmax then fmax:=f[i];
sum:=sum+(f[i]/i)
end;
b1:=sqr(fmin);
b2:=sqr(fmax)*fmax;
s:=(fmin/(b1+b2))*sum;
writeln('b1=',b1:3:1,'b2=',b2:3:1,'s=',s:3:5);
read(x);
end.


volvo
Каким боком он должен быть динамическим? Располагаться в динамической памяти, или динамически менять размерность? Если первое - то поменять надо будет совсем немного, максимум - добавить в программу десяток символов, а если второе - то исправлений будет побольше...
Kaliban
Скорее всего первое... помню, что нада задействовать указатели (где еще команда getmem используется)
volvo
Не обязательно мучаться с GetMem - достаточно и обычного New:

program mas6;
type
arrtype = array[1 .. 8] of real;
var
f: ^arrtype;
sum,fmin,fmax,b1,b2,s,x: real;
i: integer;
t: text;
begin
assign(t, 'mas06.dan');
reset(t);

fmin:=1e30;
fmax:=-1e30;

new(f);
for i:=1 to 8 do begin
read(t,f^[i]);
if f^[i]<fmin then fmin:=f^[i];
if f^[i]>fmax then fmax:=f^[i];
sum:=sum+(f^[i]/i)
end;
b1:=sqr(fmin);
b2:=sqr(fmax)*fmax;
s:=(fmin/(b1+b2))*sum;
writeln('b1=',b1:3:1,'b2=',b2:3:1,'s=',s:3:5);
read(x);
dispose(f);
end.

(если твоя программа работала правильно, то и эта будет...)
Kaliban
Ок, спасиба. А как сделать так чтобы массив динамически изменял размерность и для чего это нужно?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.