![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
kent |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 50 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Захотел использовать динамическую матрицу в задаче, но что то не получается... Попытался сначала сделать ввод вывод, но вводишь к примеру M = 3, N = 3...
Вводишь 1 2 3 1 2 3 1 2 3 Выводит 1 1 1 1 1 2 1 2 3 Вот код:
uses crt;
var M,N : Integer;
type
MyType = Integer;
type
MyMatrix = array [1..1,1..1] of MyType;
TMatrix = ^MyMatrix;
{-----------------------------------------------}
Procedure ReadMatrix(var mx : TMatrix);
var i,j : Integer;
begin
for i := 1 to M do
for j := 1 to N do begin
Write('Element [',i,',',j,']:');
ReadLn(mx^[i,j]);
end;
end;
{-----------------------------------------------}
{-----------------------------------------------}
Procedure WriteMatrix(var mx : TMatrix);
var i,j : Integer;
begin
for i := 1 to M do
for j := 1 to N do begin
Write(mx^[i,j]:3);
if j = N then WriteLn;
end;
end;
{-----------------------------------------------}
var a : TMatrix;
Size : Word;
begin
{$R-}
Clrscr;
Write('Input M:');
ReadLn(M);
Write('Input N:');
ReadLn(N);
Size := M * N * SizeOf(MyType);
GetMem(a,Size);
WriteLn('Input Matrix:');
ReadMatrix(a);
WriteLn;
WriteLn('Source Matrix:');
WriteMatrix(a);
FreeMem(a,Size);
Readkey;
end.
Подскажите что не так... Сообщение отредактировано: kent - 30.07.2005 20:39 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата(kent @ 30.07.05 20:16) Подскажите что не так... ![]() GetMem(a,Size);
Если бы все было так просто... Вообще-то описания типов должны быть такими: type
MyType = Integer;
PVector = ^TVector;
TVector = Array[1 .. maxInt div sizeof(MyType)] Of MyType;
PMatrix = ^TMatrix;
TMatrix = Array[1 .. MaxInt div sizeof(PVector)] Of PVector;
Ну, и выделение/освобождение памяти, соотвественно: ReadLn(M);
GetMem(a, M*SizeOf(PVector));
ReadLn(N);
For i := 1 To M Do
GetMem(a^[i], N*SizeOf(MyType));
Кстати, в процедуре распечатки матрицы у тебя лишний If - зачем? Вот так не лучше? ;) Procedure WriteMatrix(mx : PMatrix);
var i, j : Integer;
begin
for i := 1 to M do begin
for j := 1 to N do
Write(mx^[i]^[j]:3);
WriteLn;
end;
end;
|
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 10:11 |