0

手順の作成方法を定義する宿題をやっていますprocedure DoSort.
このプロシージャには、25 個の整数の配列である「data」と呼ばれるローカル変数が 1 つあります。 data : array[0..24] of Integer;この手順には、次の 4 つの主な手順があります。

1) PopulateArray(data)
2) ShowNumbersInList(data)
3) PlotBars(data)
4) Sort(data)

これらの各ステップは、追加のプロシージャへのプロシージャ コールです。ただし、そのようにコーディングすると、 の呼び出しごとに配列に異なる値が再設定されますDoSort。最初の呼び出しでのみ配列を設定する必要があります。私は多くのことを試しました...

    if data[0] = data[1]
    if data[0] = nil
    if data[0].free
    if data.free
    if data = nil

など。別の変数を作成せずにこれを行う必要がありますfirstRun : Boolean。基本的に、私がする必要があるのは、配列が作成されているかどうかを確認することです

    procedure DoSort();
    Var
      data : array[0..24] of Integer;
    begin
      if data[0] = data[1] then // DOESN'T WORK
      begin
        PopulateArray(data); 
      end
      else
      begin
        ShowNumbersInList(data);
        PlotBars(data);
        Sort(data);
      end;
    end;

私はそれを理解できないので、これは私を夢中にさせています。誰でも助けることができますか?ありがとう。

4

2 に答える 2

0

配列dataはプロシージャに対してローカルDoSort()です。DoSort()これは、が呼び出されるたびに、初期化されていない配列が使用されることを意味します。(スタックに割り当てられます)。

データを永続化するには、プロシージャのスコープ外で宣言し、参照渡ししますprocedure DoSort(var data: array of integer);

初めて DoSort に入る前にデータを初期化してください。

例:

procedure Main;
var
  data : array[0..24] of Integer;
begin
  PopulateData(data);

  while jobNotDone do
  begin
    DoSort(data);
    ...
  end;
end;  
于 2013-04-12T07:46:40.120 に答える
-1

Pascal を書いてから何ヶ月も経ちました。ただし、他の言語では、シングルトン (Java、C++ など) を作成します。基本的には、コンストラクターを PRIVATE にするため、呼び出しによって単一のインスタンスしか作成できません。

これは宿題なので、完全な回答はしませんが、以下のリンクを参考にしてください。

http://wiki.freepascal.org/Singleton_Pattern#Simple_Singleton

詳細を添えてご返信いただければ幸いです。

于 2013-04-11T12:29:00.930 に答える