const
H= 100;
L=200;
r=0.005;
var
ms: array [1..10000, 1..10000] of real;
M,N: integer;
h: real;
begin
h:= r/10;
M:=L div h;
N:=H div h;
{далее работаем с массивом ms, учитывая размерность M*N (ну или N*M - как Вам больше понравится)}
end.
Формирование двумерного массива
в начале задачи задаются величины:
H= 100;
L=200;
r=0.005;
исхоя из этого расчитывается следующее:
h=r/10;
M=L/h;
N=H/h;
Вот здесь у меня и проблема с формирование двумерного массива:
array[1...M,1...N] of real;
Как выкрутиться? Заранее благодарен.
Цитата: sieras_a
Никак неполучается сформировать двумерный массив. Идея такая:
в начале задачи задаются величины:
H= 100;
L=200;
r=0.005;
исхоя из этого расчитывается следующее:
h=r/10;
M=L/h;
N=H/h;
Вот здесь у меня и проблема с формирование двумерного массива:
array[1...M,1...N] of real;
Как выкрутиться? Заранее благодарен.
в начале задачи задаются величины:
H= 100;
L=200;
r=0.005;
исхоя из этого расчитывается следующее:
h=r/10;
M=L/h;
N=H/h;
Вот здесь у меня и проблема с формирование двумерного массива:
array[1...M,1...N] of real;
Как выкрутиться? Заранее благодарен.
Ну, во-первых, размерность массива есть величина целочисленного типа. А выкрутиться тут можно, к примеру, вот так:
Код:
P.S. Если я правильно понял, здесь "M" и "N" не ограничиваються 10000?
Цитата: sieras_a
Если я правильно понял, здесь "M" и "N" не ограничиваються 10000?
Числа M и N ограничиваются размерностью массива ms:
[COLOR="Navy"]ms: array [1..10000, 1..10000] of real;[/COLOR]
И еще: величины H, L, r - пороизвольные, т.е. величина массива может быть любая... Как быть???
Это часть какой-то задачи? Поделитесь уж полным условием - может по-другому как-то сделаем..
В этом поле, в произвольной точке (x,y) задается потенциал (величина). Задача - расчитать распостранение потенциала...
"Извените что так медленно. На клавиатуре нет русских букв..."
Код:
uses crt;
var mas,p:^Real;
m,n,i,j,k:integer; {array[1..m,1..n]}
begin
M:=10;
N:=10;
k:=1;
Getmem(mas,m*n*sizeof(real));
for i:=1 to m do
for j:=1 to n do
begin
p:=ptr(seg(mas^),ofs(mas^)+(i-1)*n*SizeOf(real)+j*SizeOf(real));
p^:=k;
inc(k);
end;
for i:=1 to m do
begin
writeln;
for j:=1 to n do
begin
p:=ptr(seg(mas^),ofs(mas^)+(i-1)*n*SizeOf(real)+j*SizeOf(real));
write(p^:6:1,' ');
end;
end;
readln;
FreeMem(mas,m*n*sizeof(real));
end.
var mas,p:^Real;
m,n,i,j,k:integer; {array[1..m,1..n]}
begin
M:=10;
N:=10;
k:=1;
Getmem(mas,m*n*sizeof(real));
for i:=1 to m do
for j:=1 to n do
begin
p:=ptr(seg(mas^),ofs(mas^)+(i-1)*n*SizeOf(real)+j*SizeOf(real));
p^:=k;
inc(k);
end;
for i:=1 to m do
begin
writeln;
for j:=1 to n do
begin
p:=ptr(seg(mas^),ofs(mas^)+(i-1)*n*SizeOf(real)+j*SizeOf(real));
write(p^:6:1,' ');
end;
end;
readln;
FreeMem(mas,m*n*sizeof(real));
end.
Спасибо за совет. Обязательно попробую...
V[I,J]=0.25*(V[I,J-1]+V[I,J+1]+V[I-1,J]+V[I+1,J]);
Здесь V[I,J] - значение потенциала в точке [I,J].
Второй день бьюсь над этим - неполучается. Помогите и на этот раз. ПОЖАЛУЙСТА!
V1[I,J]=0.25*(V0[I,J-1]+V0[I,J+1]+V0[I-1,J]+V0[I+1,J]);
где V0 и V1 - два разных массива.