質問編集履歴

4

発生している問題・エラーメッセージ、該当のソースコード、試したことを私が試した最新の情報に変更しています。

2023/04/30 00:41

投稿

kouchan_dd
kouchan_dd

スコア20

test CHANGED
File without changes
test CHANGED
@@ -23,26 +23,21 @@
23
23
  ### 発生している問題・エラーメッセージ
24
24
 
25
25
  ```
26
+ Kawai 84 62 74
27
+ Abe 62 58 68
28
+ Kubota 88 95 54
29
+ Yamada 77 39 100
30
+ Suzuki 82 55 66
31
+ Ogawa 48 100 61
32
+ Asai 88 92 96
33
+ Yoshida 94 92 96
34
+ Number of students : 8
26
- 本来は、Tanaka 65 90 74.....のようにバイナリファイルの中に入っているデータが表示されるのですが
35
+ Average : 77.875000 74.125000 76.875000
27
36
 
28
- Kawai 77 59 88
29
- P 1634951507 26987 0
30
- Inoue 62 58 68
31
- X 1868723531 24948 0
32
- Yamada 92 52 73
33
- A 1634623828 24939 0
34
- Sato 82 55 66
35
- 0 2002872143 97 0
36
- Asai 92 40 85
37
- ? 1633972046 0 0
38
- Yoshida 94 92 96
39
- Number of students : 11
40
- Average : 797740323.090909 7029.727273 43.272727
41
-
42
- C:\Lecture\Prog2\Prog2_3_hw5\x64\Debug\Prog2_3_hw5.exe (プロセス 15328) は、コード 0 で終了しました。
37
+ C:\Lecture\Prog2\Prog2_3_hw5\x64\Debug\Prog2_3_hw5.exe (プロセス 2364) は、コード 0 で終了しました。
43
38
  このウィンドウを閉じるには、任意のキーを押してください...
44
39
 
45
- という風に1行正しい→1行間違いという風にってしまいます。
40
+ という風に正しいように表示されるのですが、正答例を見てみる"Kawai"の上に"Kimura"というデータがあるそうんです。
46
41
  ```
47
42
 
48
43
  ### 該当のソースコード
@@ -68,6 +63,7 @@
68
63
  {
69
64
  fread(&sub[i], sizeof(int), 3, fp);
70
65
  fread(name[i], sizeof(char), 12, fp);
66
+ fread(&sub[i], sizeof(int), 3, fp);
71
67
  ave[0] += sub[i][0];
72
68
  ave[1] += sub[i][1];
73
69
  ave[2] += sub[i][2];
@@ -87,6 +83,6 @@
87
83
  ### 試したこと
88
84
 
89
85
  while文の中にfgetsを入れてみたりsizeof(Int)にしたりしましたが、ファイルがうまく出力されませんでした。
90
- また、teratailでの皆様の回答を参考にさせていただき、whileの{}中のfreadの文を3文から2文に減ら、順番も変更しましたところ、生徒数7しか出こなかったデータが11ま出てくるようになりましたが、正確なデータがされませんでし
86
+ また、teratailでの皆様の回答を参考にさせていただき、whileの{}中のfreadの文を増やしてname→subのデータでループできるようにしたところ8個の正確なデータと平均点もデータが出たのすが、正答例を見ると"Kawai"のデータの上に"Kimura"というデータがあるらく、やはりwhile文の中が間違えていると思うのです
91
87
 
92
88
 

3

初心者アイコンに変更しました。

2023/04/30 00:05

投稿

kouchan_dd
kouchan_dd

スコア20

test CHANGED
File without changes
test CHANGED
@@ -87,6 +87,6 @@
87
87
  ### 試したこと
88
88
 
89
89
  while文の中にfgetsを入れてみたりsizeof(Int)にしたりしましたが、ファイルがうまく出力されませんでした。
90
- また、teratailでの皆様の回答を参考にさせていただき、whileの{}中のfreadの文を3文から2文に減らし、順番も変更しましたところ、生徒数7しか出てこなかったデータが11まで出てくるようになりましたが、正確なデータが抽出されませんでした
90
+ また、teratailでの皆様の回答を参考にさせていただき、whileの{}中のfreadの文を3文から2文に減らし、順番も変更しましたところ、生徒数7しか出てこなかったデータが11まで出てくるようになりましたが、正確なデータが抽出されませんでした
91
91
 
92
92
 

2

タグを修正しました。

2023/04/30 00:03

投稿

kouchan_dd
kouchan_dd

スコア20

test CHANGED
File without changes
test CHANGED
File without changes

1

発生している問題・エラーメッセージ、試したことの欄を自分が試した最新のものに更新しました。

2023/04/30 00:01

投稿

kouchan_dd
kouchan_dd

スコア20

test CHANGED
File without changes
test CHANGED
@@ -25,20 +25,24 @@
25
25
  ```
26
26
  本来は、Tanaka 65 90 74.....のようにバイナリファイルの中に入っているデータが表示されるのですが
27
27
 
28
+ Kawai 77 59 88
28
- M 1635213643 105 0
29
+ P 1634951507 26987 0
29
- Abe 62 58 68
30
+ Inoue 62 58 68
30
- X 1937006925 26997 0
31
+ X 1868723531 24948 0
31
- Tanaka 65 90 74
32
+ Yamada 92 52 73
33
+ A 1634623828 24939 0
34
+ Sato 82 55 66
32
- J 2002872143 97 0
35
+ 0 2002872143 97 0
33
- Asai 88 92 96
36
+ Asai 92 40 85
34
- ^ -858993460 -858993460 -858993460
37
+ ? 1633972046 0 0
38
+ Yoshida 94 92 96
35
- Number of students : 7
39
+ Number of students : 11
36
- Average : -122713338.857143 -122713338.285714 -122713337.714286
40
+ Average : 797740323.090909 7029.727273 43.272727
37
41
 
38
- C:\Lecture\Prog2\Prog2_3_hw5\x64\Debug\Prog2_3_hw5.exe (プロセス 14096) は、コード 0 で終了しました。
42
+ C:\Lecture\Prog2\Prog2_3_hw5\x64\Debug\Prog2_3_hw5.exe (プロセス 15328) は、コード 0 で終了しました。
39
43
  このウィンドウを閉じるには、任意のキーを押してください...
40
44
 
41
- という風になってしまいます。
45
+ という風に1行正しい→1行間違いという風になってしまいます。
42
46
  ```
43
47
 
44
48
  ### 該当のソースコード
@@ -62,9 +66,8 @@
62
66
  i = 0;
63
67
  while (fread(&name[i], sizeof(char), 12, fp) == 12)
64
68
  {
69
+ fread(&sub[i], sizeof(int), 3, fp);
65
70
  fread(name[i], sizeof(char), 12, fp);
66
- fread(&sub[i], sizeof(int), 3, fp);
67
- fread(&ave, sizeof(double), 3, fp);
68
71
  ave[0] += sub[i][0];
69
72
  ave[1] += sub[i][1];
70
73
  ave[2] += sub[i][2];
@@ -84,5 +87,6 @@
84
87
  ### 試したこと
85
88
 
86
89
  while文の中にfgetsを入れてみたりsizeof(Int)にしたりしましたが、ファイルがうまく出力されませんでした。
90
+ また、teratailでの皆様の回答を参考にさせていただき、whileの{}中のfreadの文を3文から2文に減らし、順番も変更しましたところ、生徒数7しか出てこなかったデータが11まで出てくるようになりましたが、正確なデータが抽出されませんでした
87
91
 
88
92