2017-10-11 77 views
-1

我做了一些搜索,說它存儲的價值不適合,但我不知道它是如何發生在我的代碼。我檢查了我的代碼很多次,但我仍然得到這個。我做了一些搜索,說它是存儲一個不適合的值,但我不知道它是如何發生在我的代碼中的。我檢查了我的代碼很多次,但我仍然得到這個。爲什麼我仍然得到exitcode 201?

program ACT2; 

uses crt; 

var 
    inputs : array[1..5] of integer; 
    index1 : integer; 
    choice : char; 
    toPrint : integer; 

function getSUM(var inputArray : array of integer) : integer; 
var 
    SUM, sumIndex : integer; 

begin 
    SUM := 0; 
    sumIndex := 1; 

    repeat 
    SUM := SUM + inputArray[sumIndex]; 
    sumIndex := sumIndex + 1; 
    until (sumIndex > 5); 

    getSUM := SUM; 
end; 


begin 

clrscr; 

    for index1 := 1 to 5 do 
    begin 
     write('Input Integer[', index1); write(']: '); 
     readln(inputs[index1]); 
    end; 

clrscr; 

write('Integers:'); 

for index1 := 1 to 5 do 
begin 
    write(' ', inputs[index1]); 
end; 

writeln(''); writeln(''); writeln(''); 

writeln('[1] SUM'); 
writeln('[2] AVERAGE'); 

writeln(''); 

write('INPUT: '); 

readln(choice); 


if(choice = '1') then 
    toPrint := getSUM(inputs); 

writeln(toPrint); 
readkey; 
end. 
+0

您能否在[編輯]中說明問題? – LW001

+0

什麼是確切的錯誤信息?是否有引用的行號? –

+2

由於堆棧溢出不是調試器,因此我正在投票關閉此題目作爲題外話題。在提出這樣的問題之前,您需要嘗試調試您的程序。 –

回答

1

其他兩個答案都正確識別你的問題,這是原因您正在使用不同的基地兩個不同的數組類型,1對0

然而,你可能已經在第一避免了這個問題通過聲明自己的整數數組類型,然後使用它一致, 如

type 
    TInputArray = array[1..5] of Integer; 
var 
    inputs : TInputArray; //array[1..5] of integer; 
    index1 : integer; 
    choice : char; 
    toPrint : integer; 

//function getSUM(var inputArray : array of integer) : integer; 
function getSUM(var inputArray : TInputArray) : integer; 
var 
    SUM, sumIndex : integer; 

begin 

    SUM := 0; 
    sumIndex := Low(inputArray); 

    repeat 
     SUM := SUM + inputArray[sumIndex]; 
     sumIndex := sumIndex + 1; 
    until (sumIndex > High(inputArray)); 

    getSUM := SUM; 
end; 

注意,整數5僅在此版本的程序的發生一次放置,並使用標準LowHigh功能的裝置的只有這樣如果要更改數組的大小,則需要更改5。實際上,將元素數量定義爲一個常量並使用數組聲明中的常量可能會更好,如

const NumOfElements = 5; 
type 
    TInputArray = array[1..NumOfElements] of Integer; 
+0

感謝您提供豐富的答案! –

2

在功能語句

function getSUM(var inputArray : array of integer) : integer; 

的inputArray是開放數組(參見FPC參考手冊14.4.5,打開陣列參數)。索引邊界是0到4,更好的是 使用low(inputArray)high(inputArray)。在重複循環中,您使用 inputArray [5],其中索引5超出範圍。

2

您在功能​​中出錯。

參數var inputArray : array of integer是一個從零開始編號的開放數組。

Run-time errors

201範圍檢查錯誤

如果用範圍檢查上,那麼你就可以得到這個錯誤在下列情況下編譯程序:

* An array was accessed with an index outside its declared range. 
* Trying to assign a value to a variable outside its range (for instance an enumerated type). 

這裏您使用的是一個超出聲明範圍的索引。

讓你的循環是這樣的:

for sumIndex := 0 to High(inputArray) do ... 

,這將使通用功能,獨立的數組的大小。

相關問題