回答編集履歴

1 CC0

yumetodo

yumetodo score 3454

2018/07/30 21:46  投稿

まず、ソースコードのインデントをなんとかしましょう。理解できるものも理解できない。あと`{}`の省力をやめる。あと変数のスコープを小さく。
```cpp
for (auto i = N - 1; i >= 0; i--) {
 d = a[i][N];
 for (auto j = i + 1; j < N; j++) {
   d -= a[i][j] * a[j][N];
 }
 a[i][N] = d / a[i][i];
}
```
`j`は内側のループのみで利用されています。(いや、外側のループの外側がどうなっているかに依存しますけど、ここ以外で`j`を使うことが有意義な結果を生むと思えない)
まあもうちょっとわかりやすい例を持ってきますか。
```cpp
#include <iostream>
int main()
{
   constexpr int N = 5;
   for (auto i = N - 1; i >= 0; i--) {
       std::cout << "i:" << i << std::endl;
       for (auto j = i + 1; j < N; j++) {
           std::cout << "j:" << j;
       }
       std::cout << std::endl;
   }
}
```
こういうコードがあったとき、実行結果は
[https://wandbox.org/permlink/ed5EdE2hdOeQW9Q6](https://wandbox.org/permlink/ed5EdE2hdOeQW9Q6)
```
i:4
i:3
j:4
i:2
j:3j:4
i:1
j:2j:3j:4
i:0
j:1j:2j:3j:4
```
となりますよね?
そういうことです。
そういうことです。
---
なんか私のコードを弄りたい需要があるようなのであえて明示しておくと、コードは[CC0](https://creativecommons.org/publicdomain/zero/1.0/)でライセンスされます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る