Показать сообщение отдельно
Старый 06.01.2010, 21:21   #1 (permalink)
mary yu
Member
 
Регистрация: 06.01.2010
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Smile Из Delphi в PascalABC

Теплого времени суток! Сделала прогу в Delphi 7. Дали задание переделать в PascalABC.
Ввод двумерного массива.Отсортировать с помощью модуля.Вывод.
Цитата:
unit Arrays_Module;
interface

Uses
Windows, SysUtils, classes;

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

type
TArray = Array 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;
// Эта процедура выводит результат в текстовом варианте


implementation

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] + IntToStr(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] + IntToStr(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] + IntToStr(poloj[i]) + ', ';
Result.Add(' ');
end;

end.
Помогите, пожалуйста!
mary yu вне форума   Ответить с цитированием
Ads

Яндекс

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