- ベストアンサー
プログラム(tmp)の意味について
プログラム(tmp)の意味について begin for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin tmp:=a[i] ; a[i]:=a[j] ; a[j]:=tmp end というプログラムがあるのですが、tmpがどういう役割を持っているのかよくわかりません。 このプログラムでtmpの辺りのプログラムがどのような意味を持っているか教えてもらえませんか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
この場合、 tmp変数は一時的にa[i]の中身を保持しておく目的で 使われてます。 (注:以下はa[i]の中身が数字だという仮定で説明してます) begin tmp:=a[i] ; a[i]:=a[j] ; // 1行目 a[j]:=tmp // 2行目 end // 3行目 まず上のプログラム部分では 配列a[i]の中身の数字と配列a[j]の中身の数字を 入れ替えようとしてます。 しかし a[i]:=a[j] // 1行目の後半 の部分で a[j]の中身をa[i]に代入してしまうと a[i]に元から入っていた数字は消えてしまいます では、どうするかというと 代入をする前に、a[i]に元から入っている数字を 一時的にどこかに保持しておかなければなりません。 そこで、事前に tmp:=a[i] ; // 1行目の前半 tmpという変数に、 a[i]に入っていた数字を入れておき、 最後の a[j]:=tmp // 2行目 とすることで a[j]にa[i]に入っていた数字(つまりtmp)を代入することができ、 結果的にa[i]とa[j]の中身の数字を入れ替えることができるわけです。 プログラミングでは 一時的な(暫定的な)用途に使われる変数に temporary(一時的)の略であるtmpという名前を つけて使う場合が多いです (まあ、習慣だとでも思ってもらえれば)
その他の回答 (1)
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 このロジックの場合ソート処理を行っています。 tmpはa[i]とa[j]を入れ替える処理を行う際にa[i]の中身を一時的に退避させる変数です。 a[i]の中身を他の箱に移してa[j]の中身をa[i]に入れて、箱に避けておいた元々のa[i]の値をa[j]に入れます。 こうすることにより値を入れ替えています。