0

私は学校でパスカルを学んでいて、私の課題で奇妙な問題に遭遇しました。

私がする必要があるのは、2つの配列を作成し、最初の配列の整数を10個の数値が読み取られるか負の数が読み取られるまで読み取ってから、同じルールで2番目の配列に移動することです。

2番目の配列の最初の番号を除いて、すべて正常に機能しているので、常に混乱しています。-1は常に配列2のインデックス1にコピーされるようです。

これは割り当てであるため、多くのコードを提供することはできませんが、次のようなものです。

while input >= 0 and index < 10 do
    begin
    read(input);
    array1[index] := input;
        index++
    end;

input:= 0; //to reset it

another while loop but for list2...

array1 1、2、3、-1およびarray2 1、2、3、4、-1を入力すると、出力は次のようになります。

list 1: 1 list 2: -1
list 1: 2 list 2: 2
list 1: 3 list 2: 3
list 1: -1 list 2: 4

これは意味がありますか?なぜこれが起こっているのかを理解するのに少し助けが必要です、私はここで立ち往生しています。

4

1 に答える 1

1

あなたの質問へのコメントが指摘しているように、問題があなたが投稿しなかったコードにある場合、何が悪いのかを見つけるのは少し難しいです。とはいえ、目に見える問題がいくつかあります

  1. 'while'ループのに'input'を読み取ります。'while'ループに入るのは、'input'の初期値に依存します。初期値は0だと思っていると思いますが、負の値のガベージ数の可能性があります。
  2. 「index++」はPascal構文ではありませんが、Cです。これは「inc(インデックス)」である必要があります。
  3. 最初のループの後に「input:= 0」と書く代わりに、これは「index:=0」にする必要があります。

最初の「while」ループの後のコードは、

index:= 0;
readln (input);
while (input >= 0) and (index < 10) do
 begin
  inc (index);
  array2[index]:= input;
  readln (input) // there is no need for a semicolon before 'end'!
 end;
于 2012-09-29T05:09:23.760 に答える