Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите решить задачу

Автор: Wanderer 9.09.2007 21:39

Дана матрица 200х200, найти сумму ее элементов по главной и побочной диагоналям.
Первый раз столкнулся с динамическими переменными вчера на лабораторной, и ни как не могу их понять.
Написал программу по шаблону, но только она не работает, если размерность матрицы сделать 200х200.

{$R-}
Type
TType=Word;
Type
PVector = ^TVector;
TVector = Array [1..1] of TType;

PDynMatrix = ^TDynMatrix;
TDynMatrix = Array [1..1] of PVector;

Var
mxDynamic:PDynMatrix;
n,i,j,s:word;

Begin
Write('n='); Readln(n);
GetMem(mxDynamic^[i], n*SizeOf(PVector));
for i:=1 to n do
GetMem (mxDynamic^[i], n*SizeOf(TType));

for i:=1 to n do begin
writeln;
for j:=1 to n do
begin
mxDynamic^[i]^[j]:=random(23);
write(mxDynamic^[i]^[j]:3);
end;
end;
s:=0;
j:=1;
for i:=1 to n do begin
s:=mxDynamic^[i]^[j]+s;
j:=j+1;
end;

writeln(' ', 'Summa glawnoj diagonali=',s);
readln;
for i:=1 to n do
FreeMem (mxDynamic^[i], n*SizeOf(TType));
FreeMem (mxDynamic, n*SizeOf (pVector));
end.

Автор: volvo 9.09.2007 22:12

GetMem(mxDynamic, n*SizeOf(PVector));
Вместо того, что было написано у тебя...

Заметь, возвращается память правильно... С чего бы это? wink.gif

Автор: Sensitive 9.09.2007 22:18

Я бы эту задачу наверное вот так делала:

uses crt;
type TType=word;
type PVector=^TVector;
TVector=array [1..100,1..100] of TType;
var a:^TVector;
n,i,j:byte;
S:real;
begin
clrscr;
New(a);
Writeln('Vvedite rozmirnist');
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
a^[i,j]:=random(99)+1;
end;
writeln;writeln;
for i:=1 to n do
begin
for j:=1 to n do write (a^[i,j]:5);
writeln;
end;
writeln;
S:=0;
for i:=1 to n do S:=S+a^[i,i];
writeln('S=',S:7:3);
dispose(a);
readln;
end.


P.S. Или так будет не верно??

Автор: klem4 9.09.2007 22:18

М

Wanderer ,

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [ code=pas ] ... [ /code ].

Исправь пожалуйста.


Автор: volvo 9.09.2007 22:29

Юля, а при размерности матрицы 200*200 - вот так:

TVector=array [1..200,1..200] of TType;
? smile.gif

А ошибки компилирования не боишься?

Автор: Sensitive 9.09.2007 22:41

а, ну да... прошу прощения тогда rolleyes.gif