質問編集履歴

8

訂正

2016/06/05 11:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,285 +1,7 @@
1
- ファイル利用(fopen()、fclose())、強制終了(exit())、入出力ストリーム(stdin、stdout、stderr、ファイルポインタ)、入出力関数(fprintf()、fscanf())等を使用した
1
+ 削除機能がない為こような形で
2
2
 
3
- プログラムを某動画を参考に学習しているのですが ループを必要とする練習問題で
4
-
5
- 1234を100回加算するというような問題が出題ました。
3
+ 削除せて頂きました。
6
4
 
7
5
 
8
6
 
9
- 問題は
10
-
11
-
12
-
13
- 例: 1234を100回出力
14
-
15
-
16
-
17
- 表示結果は 1回目:1234 2回目:2468 3回目:3702と
18
-
19
- いうように ひたすら同じ数字を加算し続けるものです。
20
-
21
-
22
-
23
- 結果表示の並び順は縦横どちらでもいいようなのですが・・・。
24
-
25
-
26
-
27
- 問題にはwhileを使用するのか for文のネストなのか書かれていません。
28
-
29
- マクロ定義で計算処理をすればいいのでしょうか? また こういった計算処理には
30
-
31
- いくつパターンがあるのでしょうか?
32
-
33
-
34
-
35
- (自分でコードを書いてみましたが・・・全くダメです こちらも添削頂けますと
36
-
37
- 幸いです。)
38
-
39
-
40
-
41
- 自分でそのパターン(while文でも出来るしfor文でも出来るけど ソースコードは短めに
42
-
43
- 簡潔にしたいので その場合はこっちを使おうといった考察)を見つけられると一番いいのでしょう
44
-
45
- が・・・
46
-
47
-
48
-
49
-
50
-
51
- 因みに 以下が主さんの正解と自分の書いたプログラム(途中のもの)です。
52
-
53
- (インクルード部分は 投稿したところコメントが巨大化し勝手にボーダーで
54
-
55
- 区切られてしまったので コメントアウトしました)
56
-
57
-
58
-
59
- 某動画はニコ動で問題を引用しますと
60
-
61
- 3939円貯金したとして 100万円貯まるのに何日かかるかを計算
62
-
63
- するプログラムを作成し 出力は日毎の貯金額がわかるように工夫せよ
64
-
65
- というものなのですが 日毎の貯金額がわかるように工夫せよの部分で
66
-
67
- ループ処理を思つきました。
7
+ ご回答有難うございました。
68
-
69
-
70
-
71
- ちなみに アップ主さんの解答はwhile文での繰り返し表示だったのですが
72
-
73
- 以下主さんのコード抜粋です。
74
-
75
-
76
-
77
- /*#include<stdio.h>*/
78
-
79
- /*#include<stdio.h>*/
80
-
81
- /*#define TARGET 1000000*/
82
-
83
- /*#define DAILY 3939*/
84
-
85
- int day=0, sum=0;
86
-
87
- 以下ファイルオープンのコードなので省略します。
88
-
89
-
90
-
91
- ループ処理部分↓
92
-
93
- while(sum<TARGET){
94
-
95
- sum+=DAILY;
96
-
97
- day++;
98
-
99
- fprintf(fp,"%4d日目:",day);
100
-
101
- fprintf(fp,"%7d円\n",sum);
102
-
103
- }
104
-
105
-
106
-
107
-
108
-
109
- こちらは 出題問題から自分で一から考えて書いてみたコードですが
110
-
111
- なんだか めちゃくクチャに・・・(┼д┼;)
112
-
113
-
114
-
115
- *練習
116
-
117
-
118
-
119
- ・一日3939円貯金
120
-
121
- 100万円貯めるのに何日かかるか計算する
122
-
123
- 出力は日毎に貯金額がわかるように工夫
124
-
125
- 実行結果はmoney.txtファイルに出力
126
-
127
-
128
-
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
- /* #include<stdio.h>*/
138
-
139
- /*#include<stdlib.h>*/
140
-
141
- /*#define NUM 3939 *//* 貯金額/day */
142
-
143
- /*#define NUM 1000000*/ /* 目標金額 */
144
-
145
-
146
-
147
-
148
-
149
- int main(void){
150
-
151
-
152
-
153
- /* 変数宣言 */
154
-
155
-
156
-
157
- int i_payment,j_day,i_sum=0,j_sum=0;
158
-
159
- char Savings[NUM+1];
160
-
161
- char daycount[NUM+1]={100};
162
-
163
-
164
-
165
-
166
-
167
-
168
-
169
-
170
-
171
- FILE *fi,*fo;
172
-
173
- /* ファイルのオープン */
174
-
175
- fi=fopen("money.txt","rt");
176
-
177
- fo=fopen("days.txt","wt");
178
-
179
-
180
-
181
- if(fi==NULL || fo==NULL){
182
-
183
- fprintf(stderr,"ファイルオープンエラー\n");
184
-
185
- /* 強制終了 */
186
-
187
-
188
-
189
- exit(1);
190
-
191
- }
192
-
193
-
194
-
195
-
196
-
197
-
198
-
199
- /* データーの入力 */
200
-
201
- fprintf(stdout"入金する金額を入れてください");
202
-
203
- fprintf(stdout"%d円\n",NUM);
204
-
205
- fprintf(stdin,"入金:");
206
-
207
- fprintf(stdin,"%d",Savings);
208
-
209
- fprintf(stdin,"日目:");
210
-
211
- fprintf(stdin,"%d",daycount);
212
-
213
-
214
-
215
-
216
-
217
-
218
-
219
- /* データー処理 */
220
-
221
- i_sum+=i_payment;
222
-
223
- j_sum+=j_day;
224
-
225
-
226
-
227
- /* データーの読み込み */
228
-
229
-
230
-
231
- for(i=0; i<1000000; i++){
232
-
233
- i_payment+=i_payment+i_payment
234
-
235
- fprintf("%d\n",i);
236
-
237
- for(j=1; j<=300; j++){
238
-
239
- fprintf("%d\n",j);
240
-
241
- if(i == 101);
242
-
243
- }
244
-
245
-
246
-
247
-
248
-
249
- }
250
-
251
-
252
-
253
- /* ファイル保存・クローズ */
254
-
255
-
256
-
257
- fclose(fp);
258
-
259
-
260
-
261
- }
262
-
263
-
264
-
265
-
266
-
267
- 問題を読んで 金額のループと日数のループの為 for文のネストを
268
-
269
- 思いついたのですが・・・
270
-
271
- 順序もばらばらで 途中まででわからなくなって書き込めていなかったりで
272
-
273
- 全く ダメですね すみません(-_-;)
274
-
275
- 自分がどの部分でプログラムに対する考察が出来ていないのか
276
-
277
- その部分で まず ダメな気がしています(><)
278
-
279
-
280
-
281
-
282
-
283
- ご教授頂けますと幸いです。
284
-
285
- どうぞ宜しくお願い致します。

7

訂正

2016/06/05 11:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -106,7 +106,7 @@
106
106
 
107
107
 
108
108
 
109
- こちらは 出題問題から自分でいてみたコードですが
109
+ こちらは 出題問題から自分で一から考えて書いてみたコードですが
110
110
 
111
111
  なんだか めちゃくクチャに・・・(┼д┼;)
112
112
 

6

訂正

2016/06/05 11:25

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
  /*#include<stdio.h>*/
78
78
 
79
- /*#include<stdio.h>*
79
+ /*#include<stdio.h>*/
80
80
 
81
81
  /*#define TARGET 1000000*/
82
82
 

5

訂正

2016/06/04 20:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -50,6 +50,10 @@
50
50
 
51
51
  因みに 以下が主さんの正解と自分の書いたプログラム(途中のもの)です。
52
52
 
53
+ (インクルード部分は 投稿したところコメントが巨大化し勝手にボーダーで
54
+
55
+ 区切られてしまったので コメントアウトしました)
56
+
53
57
 
54
58
 
55
59
  某動画はニコ動で問題を引用しますと

4

訂正

2016/06/04 20:28

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -70,13 +70,13 @@
70
70
 
71
71
 
72
72
 
73
+ /*#include<stdio.h>*/
74
+
73
- #include<stdio.h>
75
+ /*#include<stdio.h>*
74
-
75
- #include<stdio.h>
76
+
76
-
77
- #define TARGET 1000000
77
+ /*#define TARGET 1000000*/
78
-
78
+
79
- #define DAILY 3939
79
+ /*#define DAILY 3939*/
80
80
 
81
81
  int day=0, sum=0;
82
82
 
@@ -130,15 +130,15 @@
130
130
 
131
131
 
132
132
 
133
- /** #include<stdio.h>
133
+ /* #include<stdio.h>*/
134
-
134
+
135
- #include<stdlib.h>
135
+ /*#include<stdlib.h>*/
136
-
136
+
137
- #define NUM 3939 /* 貯金額/day */
137
+ /*#define NUM 3939 *//* 貯金額/day */
138
-
138
+
139
- #define NUM 1000000 /* 目標金額 */
139
+ /*#define NUM 1000000*/ /* 目標金額 */
140
-
141
- */
140
+
141
+
142
142
 
143
143
 
144
144
 

3

訂正

2016/06/04 20:26

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -130,13 +130,15 @@
130
130
 
131
131
 
132
132
 
133
- #include<stdio.h>
133
+ /** #include<stdio.h>
134
134
 
135
135
  #include<stdlib.h>
136
136
 
137
137
  #define NUM 3939 /* 貯金額/day */
138
138
 
139
- #define NUM 1000000 /* 目標金額 */
139
+ #define NUM 1000000 /* 目標金額 */
140
+
141
+ */
140
142
 
141
143
 
142
144
 

2

訂正

2016/06/04 20:24

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -40,7 +40,235 @@
40
40
 
41
41
  自分でそのパターン(while文でも出来るしfor文でも出来るけど ソースコードは短めに
42
42
 
43
- 簡潔にしたいので その場合はこっちを使おうといった考察)を見つけられると一番いいのでしょうが・・・
43
+ 簡潔にしたいので その場合はこっちを使おうといった考察)を見つけられると一番いいのでしょう
44
+
45
+ が・・・
46
+
47
+
48
+
49
+
50
+
51
+ 因みに 以下が主さんの正解と自分の書いたプログラム(途中のもの)です。
52
+
53
+
54
+
55
+ 某動画はニコ動で問題を引用しますと
56
+
57
+ 3939円貯金したとして 100万円貯まるのに何日かかるかを計算
58
+
59
+ するプログラムを作成し 出力は日毎の貯金額がわかるように工夫せよ
60
+
61
+ というものなのですが 日毎の貯金額がわかるように工夫せよの部分で
62
+
63
+ ループ処理を思いつきました。
64
+
65
+
66
+
67
+ ちなみに アップ主さんの解答はwhile文での繰り返し表示だったのですが
68
+
69
+ 以下主さんのコード抜粋です。
70
+
71
+
72
+
73
+ #include<stdio.h>
74
+
75
+ #include<stdio.h>
76
+
77
+ #define TARGET 1000000
78
+
79
+ #define DAILY 3939
80
+
81
+ int day=0, sum=0;
82
+
83
+ 以下ファイルオープンのコードなので省略します。
84
+
85
+
86
+
87
+ ループ処理部分↓
88
+
89
+ while(sum<TARGET){
90
+
91
+ sum+=DAILY;
92
+
93
+ day++;
94
+
95
+ fprintf(fp,"%4d日目:",day);
96
+
97
+ fprintf(fp,"%7d円\n",sum);
98
+
99
+ }
100
+
101
+
102
+
103
+
104
+
105
+ こちらは 出題問題から自分で描いてみたコードですが
106
+
107
+ なんだか めちゃくクチャに・・・(┼д┼;)
108
+
109
+
110
+
111
+ *練習
112
+
113
+
114
+
115
+ ・一日3939円貯金
116
+
117
+ 100万円貯めるのに何日かかるか計算する
118
+
119
+ 出力は日毎に貯金額がわかるように工夫
120
+
121
+ 実行結果はmoney.txtファイルに出力
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+ #include<stdio.h>
134
+
135
+ #include<stdlib.h>
136
+
137
+ #define NUM 3939 /* 貯金額/day */
138
+
139
+ #define NUM 1000000 /* 目標金額 */
140
+
141
+
142
+
143
+ int main(void){
144
+
145
+
146
+
147
+ /* 変数宣言 */
148
+
149
+
150
+
151
+ int i_payment,j_day,i_sum=0,j_sum=0;
152
+
153
+ char Savings[NUM+1];
154
+
155
+ char daycount[NUM+1]={100};
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+ FILE *fi,*fo;
166
+
167
+ /* ファイルのオープン */
168
+
169
+ fi=fopen("money.txt","rt");
170
+
171
+ fo=fopen("days.txt","wt");
172
+
173
+
174
+
175
+ if(fi==NULL || fo==NULL){
176
+
177
+ fprintf(stderr,"ファイルオープンエラー\n");
178
+
179
+ /* 強制終了 */
180
+
181
+
182
+
183
+ exit(1);
184
+
185
+ }
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+ /* データーの入力 */
194
+
195
+ fprintf(stdout"入金する金額を入れてください");
196
+
197
+ fprintf(stdout"%d円\n",NUM);
198
+
199
+ fprintf(stdin,"入金:");
200
+
201
+ fprintf(stdin,"%d",Savings);
202
+
203
+ fprintf(stdin,"日目:");
204
+
205
+ fprintf(stdin,"%d",daycount);
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+ /* データー処理 */
214
+
215
+ i_sum+=i_payment;
216
+
217
+ j_sum+=j_day;
218
+
219
+
220
+
221
+ /* データーの読み込み */
222
+
223
+
224
+
225
+ for(i=0; i<1000000; i++){
226
+
227
+ i_payment+=i_payment+i_payment
228
+
229
+ fprintf("%d\n",i);
230
+
231
+ for(j=1; j<=300; j++){
232
+
233
+ fprintf("%d\n",j);
234
+
235
+ if(i == 101);
236
+
237
+ }
238
+
239
+
240
+
241
+
242
+
243
+ }
244
+
245
+
246
+
247
+ /* ファイル保存・クローズ */
248
+
249
+
250
+
251
+ fclose(fp);
252
+
253
+
254
+
255
+ }
256
+
257
+
258
+
259
+
260
+
261
+ 問題を読んで 金額のループと日数のループの為 for文のネストを
262
+
263
+ 思いついたのですが・・・
264
+
265
+ 順序もばらばらで 途中まででわからなくなって書き込めていなかったりで
266
+
267
+ 全く ダメですね すみません(-_-;)
268
+
269
+ 自分がどの部分でプログラムに対する考察が出来ていないのか
270
+
271
+ その部分で まず ダメな気がしています(><)
44
272
 
45
273
 
46
274
 

1

修正

2016/06/04 20:21

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -32,6 +32,12 @@
32
32
 
33
33
 
34
34
 
35
+ (自分でコードを書いてみましたが・・・全くダメです こちらも添削頂けますと
36
+
37
+ 幸いです。)
38
+
39
+
40
+
35
41
  自分でそのパターン(while文でも出来るしfor文でも出来るけど ソースコードは短めに
36
42
 
37
43
  簡潔にしたいので その場合はこっちを使おうといった考察)を見つけられると一番いいのでしょうが・・・