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

質問編集履歴

3

追記の削除

2021/03/06 03:31

投稿

ishiko
ishiko

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
  平均点、標準偏差、偏差値を求めるプログラム。
3
3
  分かりやすいように2人分のデータを使ってみました。
4
- ー追記ー
4
+
5
- 載せたプログラム合っていました。すみません、、
6
- 追記のプログラムも同じように計算しているのですが、こちらは実行結果がおかしいです。どこが違うのか分かりません。
7
5
  ### 発生している問題・エラーメッセージ
8
6
 
9
7
  ```
@@ -94,102 +92,8 @@
94
92
  data2[m].dev[0], data2[m].dev[1], data2[m].dev[2], data2[m].dev[3], data2[m].dev[4] );
95
93
  }
96
94
 
97
- }
98
- ーーーーーーーーーーーー追記ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
99
- #include <stdio.h>
100
- #include <stdlib.h>
101
- #include <string.h>
102
- #include <math.h>
103
- #include <ctype.h>
104
95
 
105
- typedef struct
106
- {
107
- char FamilyName[32];
108
- char FirstName[32];
109
- int Score[5];
110
- }Student;
111
-
112
- int main(void)
113
- {
114
- int sum[5]={0};
115
- double ave[5];
116
- double sum2[5]={0.000};
117
- double sd[5]={0.000};
118
- typedef struct
119
- {
120
- double dev[5];
121
- }Deviation;
122
-
123
- Deviation data2[50] = {0};
124
-
125
- int i, m;
126
-
127
- FILE*fp;
128
- Student data[50];
129
-
130
- fp=fopen("tensu.txt","r");
131
- if(fp == NULL)
132
- {
133
- perror("ファイルの読み込みに失敗/n");
134
- }
135
- for( i = 0; i < 50; i++ )
136
- {
137
- if( fscanf( fp, "%s%s%d %d %d %d %d\n" , data[i].FamilyName, data[i].FirstName,
138
- &data[i].Score[0], &data[i].Score[1], &data[i].Score[2], &data[i].Score[3], &data[i].Score[4] ) != 7 ) break;
139
- }
140
96
 
141
- for( i = 0; i < 5; i++ )
142
- {
143
- for( m = 0; m < 50; m++ )
144
- {
145
- sum[i] += data[m].Score[i];
146
- }
147
- }
148
- ave[0] = sum[0]/50;
149
- ave[1] = sum[1]/50;
150
- ave[2] = sum[2]/50;
151
- ave[3] = sum[3]/50;
152
- ave[4] = sum[4]/50;
153
-
154
- for( i = 0; i < 5; i++ )
155
- {
156
- for( m = 0; m < 50; m++ )
157
- {
158
- sum2[i] += ( data[m].Score[i] - ave[i] )*( data[m].Score[i] - ave[i] );
159
- }
160
- }
161
- sd[0] = sqrt(sum2[0]/50);
162
- sd[1] = sqrt(sum2[1]/50);
163
- sd[2] = sqrt(sum2[2]/50);
164
- sd[3] = sqrt(sum2[3]/50);
165
- sd[4] = sqrt(sum2[4]/50);
166
-
167
- for( i = 0; i < 5; i++ )
168
- {
169
- for( m = 0; m < 50; m++ )
170
- {
171
- data2[m].dev[i] = ( data[m].Score[i] - ave[i] ) *10/sd[i] + 50;
172
- }
173
- }
174
-
175
-
176
- for( m = 0; m < 50; m++ )
177
- {
178
- printf("%10s %10s %2d %2d %2d %2d %2d | %2.2f %2.2f %2.2f %2.2f %2.2f\n",
179
- data[m].FamilyName, data[m].FirstName, data[m].Score[0], data[m].Score[1], data[m].Score[2], data[m].Score[3], data[m].Score[4],
180
- data2[m].dev[0], data2[m].dev[1], data2[m].dev[2], data2[m].dev[3], data2[m].dev[4] );
181
- }
182
-
183
- printf("\n-----------------------------------------------------------------------------------------------\n");
184
- printf("平均点: %2.2f %2.2f %2.2f %2.2f %2.2f\n",ave[0], ave[1], ave[2], ave[3], ave[4]);
185
- printf("標準偏差:%2.2f %2.2f %2.2f %2.2f %2.2f\n",sd[0], sd[1], sd[2], sd[3], sd[4]);
186
-
187
-
188
-
189
- fclose( fp );
190
-
191
- }
192
-
193
97
  ```
194
98
 
195
99
  ### 試したこと
@@ -204,60 +108,6 @@
204
108
  Yamada Taro 25 10 40 0 15 | 40.00 40.00 40.00 40.00 40.00
205
109
  Suzuki Hana 75 60 85 90 70 | 60.00 60.00 60.00 60.00 60.00
206
110
 
207
- 追記の実行結果は以下です。(便宜上同じ生徒を50人並べたファイルを使用しています。)
208
- 以下のデータを「syukei.txt」に出力します
209
- 姓     名     点数        偏差値
210
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
211
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
212
- SUZUKI Takuya 40 20 30 40 50 | 100.00 -1.#J -1.#J -1.#J -1.#J
213
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
214
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
215
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
216
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
217
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
218
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
219
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
220
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
221
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
222
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
223
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
224
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
225
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
226
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
227
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
228
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
229
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
230
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
231
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
232
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
233
- SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
234
- SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
235
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
236
- YAMADA Hanako 80 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
237
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
238
- YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
239
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
240
- YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
241
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
242
- YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
243
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
244
- YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
245
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
246
- YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
247
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
248
- YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
249
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
250
- YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
251
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
252
- YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
253
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
254
- YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
255
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
256
- YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
257
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
258
- YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
259
- YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
260
-
261
111
  -----------------------------------------------------------------------------------------------
262
112
  平均点: 45.00 20.00 30.00 40.00 50.00
263
113
  標準偏差:7.00 0.00 0.00 0.00 0.00

2

}の消し忘れ

2021/03/06 03:31

投稿

ishiko
ishiko

スコア6

title CHANGED
File without changes
body CHANGED
@@ -184,7 +184,7 @@
184
184
  printf("平均点: %2.2f %2.2f %2.2f %2.2f %2.2f\n",ave[0], ave[1], ave[2], ave[3], ave[4]);
185
185
  printf("標準偏差:%2.2f %2.2f %2.2f %2.2f %2.2f\n",sd[0], sd[1], sd[2], sd[3], sd[4]);
186
186
 
187
- }
187
+
188
188
 
189
189
  fclose( fp );
190
190
 

1

追記

2021/03/05 16:07

投稿

ishiko
ishiko

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,10 +1,13 @@
1
1
  ### 前提・実現したいこと
2
2
  平均点、標準偏差、偏差値を求めるプログラム。
3
3
  分かりやすいように2人分のデータを使ってみました。
4
+ ー追記ー
5
+ 載せたプログラム合っていました。すみません、、
6
+ 追記のプログラムも同じように計算しているのですが、こちらは実行結果がおかしいです。どこが違うのか分かりません。
4
7
  ### 発生している問題・エラーメッセージ
5
8
 
6
9
  ```
7
- 標準偏差と偏差値が違う。(平均点は合っている)
10
+ 標準偏差と偏差値が違う。(平均点は合っている)←追記プログラム
8
11
  ```
9
12
 
10
13
  ### 該当のソースコード
@@ -92,6 +95,101 @@
92
95
  }
93
96
 
94
97
  }
98
+ ーーーーーーーーーーーー追記ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
99
+ #include <stdio.h>
100
+ #include <stdlib.h>
101
+ #include <string.h>
102
+ #include <math.h>
103
+ #include <ctype.h>
104
+
105
+ typedef struct
106
+ {
107
+ char FamilyName[32];
108
+ char FirstName[32];
109
+ int Score[5];
110
+ }Student;
111
+
112
+ int main(void)
113
+ {
114
+ int sum[5]={0};
115
+ double ave[5];
116
+ double sum2[5]={0.000};
117
+ double sd[5]={0.000};
118
+ typedef struct
119
+ {
120
+ double dev[5];
121
+ }Deviation;
122
+
123
+ Deviation data2[50] = {0};
124
+
125
+ int i, m;
126
+
127
+ FILE*fp;
128
+ Student data[50];
129
+
130
+ fp=fopen("tensu.txt","r");
131
+ if(fp == NULL)
132
+ {
133
+ perror("ファイルの読み込みに失敗/n");
134
+ }
135
+ for( i = 0; i < 50; i++ )
136
+ {
137
+ if( fscanf( fp, "%s%s%d %d %d %d %d\n" , data[i].FamilyName, data[i].FirstName,
138
+ &data[i].Score[0], &data[i].Score[1], &data[i].Score[2], &data[i].Score[3], &data[i].Score[4] ) != 7 ) break;
139
+ }
140
+
141
+ for( i = 0; i < 5; i++ )
142
+ {
143
+ for( m = 0; m < 50; m++ )
144
+ {
145
+ sum[i] += data[m].Score[i];
146
+ }
147
+ }
148
+ ave[0] = sum[0]/50;
149
+ ave[1] = sum[1]/50;
150
+ ave[2] = sum[2]/50;
151
+ ave[3] = sum[3]/50;
152
+ ave[4] = sum[4]/50;
153
+
154
+ for( i = 0; i < 5; i++ )
155
+ {
156
+ for( m = 0; m < 50; m++ )
157
+ {
158
+ sum2[i] += ( data[m].Score[i] - ave[i] )*( data[m].Score[i] - ave[i] );
159
+ }
160
+ }
161
+ sd[0] = sqrt(sum2[0]/50);
162
+ sd[1] = sqrt(sum2[1]/50);
163
+ sd[2] = sqrt(sum2[2]/50);
164
+ sd[3] = sqrt(sum2[3]/50);
165
+ sd[4] = sqrt(sum2[4]/50);
166
+
167
+ for( i = 0; i < 5; i++ )
168
+ {
169
+ for( m = 0; m < 50; m++ )
170
+ {
171
+ data2[m].dev[i] = ( data[m].Score[i] - ave[i] ) *10/sd[i] + 50;
172
+ }
173
+ }
174
+
175
+
176
+ for( m = 0; m < 50; m++ )
177
+ {
178
+ printf("%10s %10s %2d %2d %2d %2d %2d | %2.2f %2.2f %2.2f %2.2f %2.2f\n",
179
+ data[m].FamilyName, data[m].FirstName, data[m].Score[0], data[m].Score[1], data[m].Score[2], data[m].Score[3], data[m].Score[4],
180
+ data2[m].dev[0], data2[m].dev[1], data2[m].dev[2], data2[m].dev[3], data2[m].dev[4] );
181
+ }
182
+
183
+ printf("\n-----------------------------------------------------------------------------------------------\n");
184
+ printf("平均点: %2.2f %2.2f %2.2f %2.2f %2.2f\n",ave[0], ave[1], ave[2], ave[3], ave[4]);
185
+ printf("標準偏差:%2.2f %2.2f %2.2f %2.2f %2.2f\n",sd[0], sd[1], sd[2], sd[3], sd[4]);
186
+
187
+ }
188
+
189
+ fclose( fp );
190
+
191
+ }
192
+
95
193
  ```
96
194
 
97
195
  ### 試したこと
@@ -104,4 +202,62 @@
104
202
  平均点: 50.00 35.00 62.50 45.00 42.50
105
203
  標準偏差:25.00 25.00 22.50 45.00 27.50
106
204
  Yamada Taro 25 10 40 0 15 | 40.00 40.00 40.00 40.00 40.00
107
- Suzuki Hana 75 60 85 90 70 | 60.00 60.00 60.00 60.00 60.00
205
+ Suzuki Hana 75 60 85 90 70 | 60.00 60.00 60.00 60.00 60.00
206
+
207
+ 追記の実行結果は以下です。(便宜上同じ生徒を50人並べたファイルを使用しています。)
208
+ 以下のデータを「syukei.txt」に出力します
209
+ 姓     名     点数        偏差値
210
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
211
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
212
+ SUZUKI Takuya 40 20 30 40 50 | 100.00 -1.#J -1.#J -1.#J -1.#J
213
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
214
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
215
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
216
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
217
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
218
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
219
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
220
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
221
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
222
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
223
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
224
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
225
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
226
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
227
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
228
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
229
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
230
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
231
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
232
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
233
+ SUZUKI Takuya 40 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
234
+ SUZUKI Takuya 40 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
235
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
236
+ YAMADA Hanako 80 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
237
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
238
+ YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
239
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
240
+ YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
241
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
242
+ YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
243
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
244
+ YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
245
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
246
+ YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
247
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
248
+ YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
249
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
250
+ YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
251
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
252
+ YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
253
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
254
+ YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
255
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
256
+ YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
257
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
258
+ YAMADA Hanako 50 20 30 40 50 | 57.14 -1.#J -1.#J -1.#J -1.#J
259
+ YAMADA Hanako 50 20 30 40 50 | 42.86 -1.#J -1.#J -1.#J -1.#J
260
+
261
+ -----------------------------------------------------------------------------------------------
262
+ 平均点: 45.00 20.00 30.00 40.00 50.00
263
+ 標準偏差:7.00 0.00 0.00 0.00 0.00