2015-02-08 58 views
-2

這裏是我的代碼的時候,讓我已經得到這個不同的結果嘗試循環的輸出

a[i,j]; 

然後我算上這

//count b 
for i := 0 to 4 do 
begin 
    for j := 0 to 5 do 
    begin 
    b[0,j] := nilEn * a[i,j]; 
    b[1,j] := nilPro * a[i,j]; 
    b[2,j] := nilKar * a[i,j]; 
    b[3,j] := nilLem * a[i,j]; 
    b[4,j] := nilVit * a[i,j]; 
    Memo1.Lines.Append(FloatToStr(b[i,j])); 
    end; 
end; 

這是問題的假設,當我比較來自備忘錄1和備忘錄2,它給出了不同的結果

for i := 0 to 4 do 
begin 
    for j := 0 to 5 do 
    begin 
    Memo2.Lines.Append(FloatToStr(b[i,j])); 
    end; 
end; 
+1

什麼是'一[]'聲明,又是什麼呢充滿了?什麼是'b []'聲明爲?什麼是輸出到'Memo1'?到'備忘錄'?您需要提供有關預期產出和實際產出問題的更多詳細信息。 – 2015-02-08 07:42:47

+0

爲什麼要分配b [0,j]五次? – 2015-02-08 09:11:12

+0

@RemyLebeau:a []和b []是具有5行和4列的矩陣2維。 a中的值將用於計算b []。 Memo1和Memo2爲b []值輸出。如b [0,0] = 3 b [0,1] = 4 – Alca 2015-02-08 09:22:18

回答

0

這是因爲你做我不同。

for i := 0 to 4 do 
    for j := 0 to 5 do 
    begin 
    b[0,j] := nilEn * a[i,j]; 
    b[1,j] := nilPro * a[i,j]; 
    b[2,j] := nilKar * a[i,j]; 
    b[3,j] := nilLem * a[i,j]; 
    b[4,j] := nilVit * a[i,j]; 
    Memo1.Lines.Append(FloatToStr(b[i,j])); 
    end; 

應該是:

const 
    Values : array[0..4] of integer = (nilEn, nilPro, nilKar, nilLem, nilVit); 

for i := 0 to 4 do 
begin 
    for j := 0 to 5 do 
    begin 
    b[i,j] := Values[i] * a[i,j]; 
    Memo1.Lines.Append(FloatToStr(b[i,j])); 
    end; 
end; 

與價值作爲變量的其他解決方案:

var 
    Values : array[0..4] of integer; 
    Values[0] := nilEn; 
    Values[1] := nilPro; 
    Values[2] := nilKar; 
    Values[3] := nilLem; 
    Values[4] := nilVit; 


for i := 0 to 4 do 
begin 
    for j := 0 to 5 do 
    begin 
    b[i,j] := Values[i] * a[i,j]; 
    Memo1.Lines.Append(FloatToStr(b[i,j])); 
    end; 
end; 
+0

是否可以將'值'作爲變量?不像Constanta。 我從edittext獲得nilEn,nilPro,nilKar等。 – Alca 2015-02-08 09:14:00

+0

當然這是可能的。聲明一個長度爲5的數組,填充它並將其傳入。 – 2015-02-08 10:15:37

相關問題