Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите решить задачу
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Wanderer
Дана матрица 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
GetMem(mxDynamic, n*SizeOf(PVector));
Вместо того, что было написано у тебя...

Заметь, возвращается память правильно... С чего бы это? wink.gif
Sensitive
Я бы эту задачу наверное вот так делала:
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
М

Wanderer ,

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

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

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

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

А ошибки компилирования не боишься?
Sensitive
а, ну да... прошу прощения тогда rolleyes.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.