teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コードの修正

2019/07/04 02:24

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -1,6 +1,4 @@
1
- j = 0 のとき、at[j-1] を参照するなどの問題があります
1
+ j = 0 のとき、at[j-1] を参照するなどの問題があります。
2
-
3
- 書き直してみました。
4
2
  ```C++
5
3
  #include <iostream>
6
4
  #include <fstream>
@@ -9,14 +7,11 @@
9
7
 
10
8
  void search(vector<int> array, vector<int> at)
11
9
  {
12
- for (int i = 1; i < array.size(); i++) {
10
+ for (int i = 1; i < array.size(); i++)
13
- for (int j = 1; j < array.size(); j++) {
11
+ for (int j = 1; j < array.size(); j++)
14
12
  if (array[i] == at[j] && array[i-1] == at[j-1]
15
- || array[i] == at[j-1] && array[i-1] == at[j]) {
13
+ || array[i] == at[j-1] && array[i-1] == at[j])
16
14
  cout << ' ' << array[i-1] << ' ' << array[i];
17
- }
18
- }
19
- }
20
15
  cout << '\n';
21
16
  }
22
17
 
@@ -26,11 +21,8 @@
26
21
  if (!fin) { cout << "There is NOT a file.\n"; return 1; }
27
22
 
28
23
  int N;
29
- while (1) {
30
- fin >> N;
31
- if (!fin || N <= 0) break;
24
+ while (fin >> N, fin && N > 0) {
32
- vector<int> array(N);
25
+ vector<int> array(N), at(N);
33
- vector<int> at(N);
34
26
  for (int i = 0; i < N; i++) fin >> array[i];
35
27
  for (int i = 0; i < N; i++) fin >> at[i];
36
28
  search(array, at);