Показать сообщение отдельно
Старый 06.01.2010, 21:45   #3 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

так, не все так просто..
Вот что я смог изменить:
Код:
program Arrays_Module;

Const
n = 10; { m и n ты можешь менять ...}
m = 12; { ... на своё усмотрение}

type
TArray = Array [1..1] of Integer; { Тип массива, в который будут записываться
отрицательные и положительные числа}
TMatrix = Array[0..m, 0..n] of Integer; { тип двумерного массива}

procedure CreatMe(var Matrix: TMatrix); { Эта процедура заполняет массив}
procedure ChangeMe(Matrix: TMatrix; var Otr, Poloj: TArray); { Эта процедура производит изменения}
Function GetResultFunc(Matrix: TMatrix; Otr, Poloj: TArray): TStrings;
{ Эта процедура выводит результат в текстовом варианте}

procedure CreatMe(var Matrix: TMatrix);
var
i, j: Integer;
begin
For i := 0 to n do
For j := 0 to m do
begin
Matrix[j, i] := Random(255) + 1; { Во тут добавляем +1, чтобы не попался ноль}
If Random(2) = 1 then
Matrix[j, i] := - Matrix[j, i]; { а это случайно выбирается знак "+" или "-"}
end;
end;

procedure ChangeMe(Matrix: TMatrix; var Otr, Poloj: TArray);
var
i, j: Integer;
begin
SetLength(otr, 0); { делаем в массиве Ort 0 элементов, ибо он может быть не пустой}
SetLength(Poloj, 0); { тоже, что и сделали выше}
For i := 0 to n do
For j := 0 to m do
begin
If Matrix[j, i] < 0 then
begin
SetLength(otr, High(otr) + 2);
Otr[High(otr)] := Matrix[j, i];
end
Else if Matrix[j, i] > 0 then
begin
SetLength(Poloj, High(Poloj) + 2);
Poloj[High(Poloj)] := Matrix[j, i];
end;
end;
end;

Function GetResultFunc(Matrix: TMatrix; Otr, Poloj: TArray): TStrings;
var
i, j: Integer;
begin
Result := TStringList.Create; { Инициализируем объект}
{ Не удивляйся, что я сделал не "TStrings.Create", а "TStringList.Create"
{ Тут нет никакой разницы, потому что TStrings - наследник от TStringList... вот и всё...}
Result.Add('Вот двумерный массив:');
Result.Add(' ');
Result.Add(' ');
{ Сначала вывожу двумерный массив}
For i := 0 to n do
begin
For j := 0 to m do
Result.Strings[Result.Count-1] := Result.Strings[Result.Count-1] + Str(Matrix[j, i]) + ' ';
Result.Add(' ');
end;
Result.Add(' ');

{ Теперь вывожу получившиеся одномерные}
Result.Add('Результат сортировки: ');
Result.Add('отрицательные числа:');
Result.Add(' ');
For i := 0 to High(otr) do
Result.Strings[Result.Count-1] := Result.Strings[Result.Count-1] + Str(otr[i]) + ', ';
Result.Add(' ');
Result.Add('положительные числа: ');
Result.Add(' ');
For i := 0 to High(poloj) do
Result.Strings[Result.Count-1] := Result.Strings[Result.Count-1] + Str(poloj[i]) + ', ';
Result.Add(' ');
end;

end.
в языке Object Pascal есть некоторые функции, которых нет в обычном Паскале, например: SetLength(); Result.Add(). Еще в Паскале нет типа Tstrings. Так что, всему этому надо искать альтернативы и заменять
MrSTEP вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070