質問編集履歴
2
選択ソートはnを使わない方法にしました。ファイルの読み込みをgetline()関数を用いて作成しました。白星の数が多い順に表示させるのですが,同じ場合は黒星の数が少ない方を上にすることを追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
### 発生している問題・エラーメッセージ
|
8
8
|
|
9
|
-
今,大相撲の勝敗が書かれたファイルを読み込み,勝敗を計算して成績の良い順にソートした結果のファイルを吐き出すプログラムを作成しているのですが,コンパイルできるのにも関わらず,結果を出力しようとしたらエラーが出てしまいました。どこに原因があるのか分からないので,教えてください。特にファイルの読み込み方に自信がないので宜しくお願いします。
|
9
|
+
今,大相撲の勝敗が書かれたファイルを読み込み,勝敗を計算して成績の良い順にソートした結果のファイルを吐き出す(白星の数が同じならばそのうち黒星の数が少ない方を上に持って行く)プログラムを作成しているのですが,コンパイルできるのにも関わらず,結果を出力しようとしたらエラーが出てしまいました。以前ファイルの読み込みに関するご指摘をもとに修正したのですが,それでもSegmentation faultが表示されます。どこに原因があるのか分からないので,教えてください。特にファイルの読み込み方・クラスへの格納に自信がないので宜しくお願いします。
|
10
10
|
|
11
11
|
```
|
12
12
|
|
@@ -60,7 +60,7 @@
|
|
60
60
|
|
61
61
|
|
62
62
|
|
63
|
-
```
|
63
|
+
```C++
|
64
64
|
|
65
65
|
#include<iostream>
|
66
66
|
|
@@ -196,7 +196,7 @@
|
|
196
196
|
|
197
197
|
/*vにrを追加*/
|
198
198
|
|
199
|
-
for (
|
199
|
+
for (size_t i=0; i<v.size(); i++){
|
200
200
|
|
201
201
|
v[i].set_r(r.get_r());
|
202
202
|
|
@@ -206,6 +206,8 @@
|
|
206
206
|
|
207
207
|
v[i].set_a(r.get_a());
|
208
208
|
|
209
|
+
v.push_back(r);
|
210
|
+
|
209
211
|
}
|
210
212
|
|
211
213
|
}
|
@@ -222,21 +224,19 @@
|
|
222
224
|
|
223
225
|
void sort(){
|
224
226
|
|
225
|
-
size_t n=v.size();
|
226
|
-
|
227
|
-
for(size_t i=0;i<v.size()-1;++
|
227
|
+
for(size_t i=0;i<v.size()-1;i++){
|
228
228
|
|
229
229
|
size_t max{i};
|
230
230
|
|
231
|
-
for(size_t j=i+1;j<v.size();++
|
231
|
+
for(size_t j=i+1;j<v.size();j++) {
|
232
232
|
|
233
233
|
/*勝敗(白星,不戦勝,黒星,不戦敗)によってvをソートする(選択ソート) */
|
234
234
|
|
235
|
-
if (v[
|
235
|
+
if (v[j].shiro()>v[max].shiro()) max=j;
|
236
|
-
|
236
|
+
|
237
|
-
if (v[
|
237
|
+
if (v[j].shiro()==v[max].shiro())
|
238
|
-
|
238
|
+
|
239
|
-
if (v[
|
239
|
+
if (v[j].kuro()<v[max].kuro()) max=j;
|
240
240
|
|
241
241
|
}
|
242
242
|
|
@@ -318,7 +318,7 @@
|
|
318
318
|
|
319
319
|
/*finからrankを取り出しrecordに格納*/
|
320
320
|
|
321
|
-
fin
|
321
|
+
getline(fin,rank);
|
322
322
|
|
323
323
|
record.set_r(rank);
|
324
324
|
|
@@ -328,7 +328,7 @@
|
|
328
328
|
|
329
329
|
/*finからnameを取り出しrecordに格納*/
|
330
330
|
|
331
|
-
fin
|
331
|
+
getline(fin,name);
|
332
332
|
|
333
333
|
record.set_n(name);
|
334
334
|
|
@@ -338,7 +338,7 @@
|
|
338
338
|
|
339
339
|
/*finからscoreを取り出しrecordに格納. その際split関数を用いる*/
|
340
340
|
|
341
|
-
fin
|
341
|
+
getline(fin,score);
|
342
342
|
|
343
343
|
split(score,' ','\t').push_back(score);
|
344
344
|
|
@@ -352,7 +352,7 @@
|
|
352
352
|
|
353
353
|
/*recordをtableに追加*/
|
354
354
|
|
355
|
-
fin
|
355
|
+
getline(fin,aite);
|
356
356
|
|
357
357
|
split(aite,' ','\t').push_back(aite);
|
358
358
|
|
@@ -404,7 +404,7 @@
|
|
404
404
|
|
405
405
|
### 試したこと
|
406
406
|
|
407
|
-
クラス型のvectorの表し方に問題がないか見直しました。
|
407
|
+
クラス型のvectorの表し方に問題がないか見直しました。選択ソートの際,size_t n=v.size()を利用せずに表しました。そして,ファイルの読み込みではそれぞれの行から出力されるようにvectorの値に注意しながらプログラムを作成しました。行単位でファイルを読み込む際にgetline()関数を利用してプログラムを作成しました。
|
408
408
|
|
409
409
|
|
410
410
|
|
1
選択ソートはnを使えば大丈夫そうだったので,ファイルの読み込みの心配について述べました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,18 +1,12 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
ここに質問の内容を詳しく書いてください。
|
6
|
-
|
7
|
-
(例)PHP(CakePHP)で●●なシステムを作っています。
|
8
|
-
|
9
|
-
|
3
|
+
大相撲の勝敗が書かれたファイルを読み込んで計算をし,成績の良い順にソートした結果のファイルを吐き出すプログラムを作成したい。
|
10
4
|
|
11
5
|
|
12
6
|
|
13
7
|
### 発生している問題・エラーメッセージ
|
14
8
|
|
15
|
-
今,大相撲の勝敗が書かれたファイルを読み込み,勝敗を計算して成績の良い順にソートした結果のファイルを吐き出すプログラムを作成しているのですが,
|
9
|
+
今,大相撲の勝敗が書かれたファイルを読み込み,勝敗を計算して成績の良い順にソートした結果のファイルを吐き出すプログラムを作成しているのですが,コンパイルできるのにも関わらず,結果を出力しようとしたらエラーが出てしまいました。どこに原因があるのか分からないので,教えてください。特にファイルの読み込み方に自信がないので宜しくお願いします。
|
16
10
|
|
17
11
|
```
|
18
12
|
|
@@ -410,7 +404,7 @@
|
|
410
404
|
|
411
405
|
### 試したこと
|
412
406
|
|
413
|
-
クラス型のvectorの表し方に問題がないか見直しました。また,降順に並べる際にnがつくという条件だったので降順に並べられるようなfor文を作成しました。
|
407
|
+
クラス型のvectorの表し方に問題がないか見直しました。また,降順に並べる際にnがつくという条件だったので降順に並べられるようなfor文を作成しました。そして,ファイルの読み込みではそれぞれの行から出力されるようにvectorの値に注意しながらプログラムを作成しました。
|
414
408
|
|
415
409
|
|
416
410
|
|