1

多項式データ型を書く Pascal での割り当てに取り組んでいます。私が抱えている最大の問題は、プロシージャ setCoeff(var p : poly; n : integer; coeff : real) を使用しようとすると、インデックス n または x^n のみの係数を持つ新しい poly オブジェクトが返されることです。他の値をそのまま維持し、手順で新しい係数を設定するにはどうすればよいですか? 絶望から多くのことを試しましたが、これらは私が使用した2つの方法です。

procedure setCoeff(var p : poly; n : integer; coeff : real);
{ prints error and halts if n < 0 or n > MAX_DEGREE; setting the coefficient of a term to zero where n >= 0 and n <= MAX_DEGREE will result in that term becoming or remaining non-existent }

var i : integer;

Begin
if n < 0 then
Begin
        writeln('Error - illegal coefficient; program halted');
    Halt(0);
End;
if n > MAX_DEGREE then
Begin
        writeln('Error - illegal coefficient; program halted');
    Halt(0);
End;
p[n] := coeff;
End;
End;

-と-

procedure setCoeff(var p : poly; n : integer; coeff : real);
{ prints error and halts if n < 0 or n > MAX_DEGREE; setting the coefficient of a term to zero where n >= 0 and n <= MAX_DEGREE will result in that term becoming or remaining non-existent }

var i : integer;

Begin
if n < 0 then
Begin
        writeln('Error - illegal coefficient; program halted');
    Halt(0);
End;
if n > MAX_DEGREE then
Begin
        writeln('Error - illegal coefficient; program halted');
    Halt(0);
End;
p[n] := coeff;
for i := MAX_DEGREE downto 0 do
Begin
getCoeff(p,i,coeff);
if coeff <> 0.0 then
    p[i] := coeff;
End;
End;

配列が参照渡しであることは知っていますが、setCoeff(...) を実行するたびに配列の値がリセットされているようです。これは、宣言方法を含む、私のデータ型の上部です。

unit
polynomial;

interface

uses
    Math;

const
MAX_DEGREE = 1000;

type
poly = Array[0..MAX_DEGREE] of Real;

var
coeff: Real;
degree : Integer;
4

0 に答える 0