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

質問編集履歴

8

訂正

2016/06/05 11:31

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,143 +1,4 @@
1
- ファイルの利用(fopen()、fclose())、強制終了(exit())、入出力ストリーム(stdin、stdout、stderr、ファイルポインタ)、入出力関数(fprintf()、fscanf())等を使用した
2
- プログラムを某動画を参考に学習しているのですが ループを必要とする練習問題で
3
- 1234を100回加算するとような問題が出題されました。
1
+ 削除機能がな為このような形で
2
+ 削除させて頂きました。
4
3
 
5
- 問題は
6
-
7
- 例: 1234を100回出力
8
-
9
- 表示結果は 1回目:1234 2回目:2468 3回目:3702と
10
- いうように ひたすら同じ数字を加算し続けるものです。
11
-
12
- 結果表示の並び順は縦横どちらでもいいようなのですが・・・。
13
-
14
- 問題にはwhileを使用するのか for文のネストなのか書かれていません。
15
- マクロ定義で計算処理をすればいいのでしょうか? また こういった計算処理には
16
- いくつパターンがあるのでしょうか?
17
-
18
- (自分でコードを書いてみましたが・・・全くダメです こちらも添削頂けますと
19
- 幸いです。)
20
-
21
- 自分でそのパターン(while文でも出来るしfor文でも出来るけど ソースコードは短めに
22
- 簡潔にしたいので その場合はこっちを使おうといった考察)を見つけられると一番いいのでしょう
23
- が・・・
24
-
25
-
26
- 因みに 以下が主さんの正解と自分の書いたプログラム(途中のもの)です。
27
- (インクルード部分は 投稿したところコメントが巨大化し勝手にボーダーで
28
- 区切られてしまったので コメントアウトしました)
29
-
30
- 某動画はニコ動で問題を引用しますと
31
- 3939円貯金したとして 100万円貯まるのに何日かかるかを計算
32
- するプログラムを作成し 出力は日毎の貯金額がわかるように工夫せよ
33
- というものなのですが 日毎の貯金額がわかるように工夫せよの部分で
34
- ループ処理を思つきました。
4
+ ご回答有難うございました。
35
-
36
- ちなみに アップ主さんの解答はwhile文での繰り返し表示だったのですが
37
- 以下主さんのコード抜粋です。
38
-
39
- /*#include<stdio.h>*/
40
- /*#include<stdio.h>*/
41
- /*#define TARGET 1000000*/
42
- /*#define DAILY 3939*/
43
- int day=0, sum=0;
44
- 以下ファイルオープンのコードなので省略します。
45
-
46
- ループ処理部分↓
47
- while(sum<TARGET){
48
- sum+=DAILY;
49
- day++;
50
- fprintf(fp,"%4d日目:",day);
51
- fprintf(fp,"%7d円\n",sum);
52
- }
53
-
54
-
55
- こちらは 出題問題から自分で一から考えて書いてみたコードですが
56
- なんだか めちゃくクチャに・・・(┼д┼;)
57
-
58
- *練習
59
-
60
- ・一日3939円貯金
61
- 100万円貯めるのに何日かかるか計算する
62
- 出力は日毎に貯金額がわかるように工夫
63
- 実行結果はmoney.txtファイルに出力
64
-
65
-
66
-
67
-
68
-
69
- /* #include<stdio.h>*/
70
- /*#include<stdlib.h>*/
71
- /*#define NUM 3939 *//* 貯金額/day */
72
- /*#define NUM 1000000*/ /* 目標金額 */
73
-
74
-
75
- int main(void){
76
-
77
- /* 変数宣言 */
78
-
79
- int i_payment,j_day,i_sum=0,j_sum=0;
80
- char Savings[NUM+1];
81
- char daycount[NUM+1]={100};
82
-
83
-
84
-
85
-
86
- FILE *fi,*fo;
87
- /* ファイルのオープン */
88
- fi=fopen("money.txt","rt");
89
- fo=fopen("days.txt","wt");
90
-
91
- if(fi==NULL || fo==NULL){
92
- fprintf(stderr,"ファイルオープンエラー\n");
93
- /* 強制終了 */
94
-
95
- exit(1);
96
- }
97
-
98
-
99
-
100
- /* データーの入力 */
101
- fprintf(stdout"入金する金額を入れてください");
102
- fprintf(stdout"%d円\n",NUM);
103
- fprintf(stdin,"入金:");
104
- fprintf(stdin,"%d",Savings);
105
- fprintf(stdin,"日目:");
106
- fprintf(stdin,"%d",daycount);
107
-
108
-
109
-
110
- /* データー処理 */
111
- i_sum+=i_payment;
112
- j_sum+=j_day;
113
-
114
- /* データーの読み込み */
115
-
116
- for(i=0; i<1000000; i++){
117
- i_payment+=i_payment+i_payment
118
- fprintf("%d\n",i);
119
- for(j=1; j<=300; j++){
120
- fprintf("%d\n",j);
121
- if(i == 101);
122
- }
123
-
124
-
125
- }
126
-
127
- /* ファイル保存・クローズ */
128
-
129
- fclose(fp);
130
-
131
- }
132
-
133
-
134
- 問題を読んで 金額のループと日数のループの為 for文のネストを
135
- 思いついたのですが・・・
136
- 順序もばらばらで 途中まででわからなくなって書き込めていなかったりで
137
- 全く ダメですね すみません(-_-;)
138
- 自分がどの部分でプログラムに対する考察が出来ていないのか
139
- その部分で まず ダメな気がしています(><)
140
-
141
-
142
- ご教授頂けますと幸いです。
143
- どうぞ宜しくお願い致します。

7

訂正

2016/06/05 11:31

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -52,7 +52,7 @@
52
52
  }
53
53
 
54
54
 
55
- こちらは 出題問題から自分でいてみたコードですが
55
+ こちらは 出題問題から自分で一から考えて書いてみたコードですが
56
56
  なんだか めちゃくクチャに・・・(┼д┼;)
57
57
 
58
58
  *練習

6

訂正

2016/06/05 11:25

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -37,7 +37,7 @@
37
37
  以下主さんのコード抜粋です。
38
38
 
39
39
  /*#include<stdio.h>*/
40
- /*#include<stdio.h>*
40
+ /*#include<stdio.h>*/
41
41
  /*#define TARGET 1000000*/
42
42
  /*#define DAILY 3939*/
43
43
  int day=0, sum=0;

5

訂正

2016/06/04 20:29

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -24,6 +24,8 @@
24
24
 
25
25
 
26
26
  因みに 以下が主さんの正解と自分の書いたプログラム(途中のもの)です。
27
+ (インクルード部分は 投稿したところコメントが巨大化し勝手にボーダーで
28
+ 区切られてしまったので コメントアウトしました)
27
29
 
28
30
  某動画はニコ動で問題を引用しますと
29
31
  3939円貯金したとして 100万円貯まるのに何日かかるかを計算

4

訂正

2016/06/04 20:28

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -34,10 +34,10 @@
34
34
  ちなみに アップ主さんの解答はwhile文での繰り返し表示だったのですが
35
35
  以下主さんのコード抜粋です。
36
36
 
37
+ /*#include<stdio.h>*/
37
- #include<stdio.h>
38
+ /*#include<stdio.h>*
38
- #include<stdio.h>
39
- #define TARGET 1000000
39
+ /*#define TARGET 1000000*/
40
- #define DAILY 3939
40
+ /*#define DAILY 3939*/
41
41
  int day=0, sum=0;
42
42
  以下ファイルオープンのコードなので省略します。
43
43
 
@@ -64,12 +64,12 @@
64
64
 
65
65
 
66
66
 
67
- /** #include<stdio.h>
67
+ /* #include<stdio.h>*/
68
- #include<stdlib.h>
68
+ /*#include<stdlib.h>*/
69
- #define NUM 3939 /* 貯金額/day */
69
+ /*#define NUM 3939 *//* 貯金額/day */
70
- #define NUM 1000000 /* 目標金額 */
70
+ /*#define NUM 1000000*/ /* 目標金額 */
71
- */
72
71
 
72
+
73
73
  int main(void){
74
74
 
75
75
  /* 変数宣言 */

3

訂正

2016/06/04 20:26

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -64,10 +64,11 @@
64
64
 
65
65
 
66
66
 
67
- #include<stdio.h>
67
+ /** #include<stdio.h>
68
68
  #include<stdlib.h>
69
69
  #define NUM 3939 /* 貯金額/day */
70
- #define NUM 1000000 /* 目標金額 */
70
+ #define NUM 1000000 /* 目標金額 */
71
+ */
71
72
 
72
73
  int main(void){
73
74
 

2

訂正

2016/06/04 20:24

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -19,8 +19,122 @@
19
19
  幸いです。)
20
20
 
21
21
  自分でそのパターン(while文でも出来るしfor文でも出来るけど ソースコードは短めに
22
- 簡潔にしたいので その場合はこっちを使おうといった考察)を見つけられると一番いいのでしょうが・・・
22
+ 簡潔にしたいので その場合はこっちを使おうといった考察)を見つけられると一番いいのでしょう
23
+ が・・・
23
24
 
24
25
 
26
+ 因みに 以下が主さんの正解と自分の書いたプログラム(途中のもの)です。
27
+
28
+ 某動画はニコ動で問題を引用しますと
29
+ 3939円貯金したとして 100万円貯まるのに何日かかるかを計算
30
+ するプログラムを作成し 出力は日毎の貯金額がわかるように工夫せよ
31
+ というものなのですが 日毎の貯金額がわかるように工夫せよの部分で
32
+ ループ処理を思いつきました。
33
+
34
+ ちなみに アップ主さんの解答はwhile文での繰り返し表示だったのですが
35
+ 以下主さんのコード抜粋です。
36
+
37
+ #include<stdio.h>
38
+ #include<stdio.h>
39
+ #define TARGET 1000000
40
+ #define DAILY 3939
41
+ int day=0, sum=0;
42
+ 以下ファイルオープンのコードなので省略します。
43
+
44
+ ループ処理部分↓
45
+ while(sum<TARGET){
46
+ sum+=DAILY;
47
+ day++;
48
+ fprintf(fp,"%4d日目:",day);
49
+ fprintf(fp,"%7d円\n",sum);
50
+ }
51
+
52
+
53
+ こちらは 出題問題から自分で描いてみたコードですが
54
+ なんだか めちゃくクチャに・・・(┼д┼;)
55
+
56
+ *練習
57
+
58
+ ・一日3939円貯金
59
+ 100万円貯めるのに何日かかるか計算する
60
+ 出力は日毎に貯金額がわかるように工夫
61
+ 実行結果はmoney.txtファイルに出力
62
+
63
+
64
+
65
+
66
+
67
+ #include<stdio.h>
68
+ #include<stdlib.h>
69
+ #define NUM 3939 /* 貯金額/day */
70
+ #define NUM 1000000 /* 目標金額 */
71
+
72
+ int main(void){
73
+
74
+ /* 変数宣言 */
75
+
76
+ int i_payment,j_day,i_sum=0,j_sum=0;
77
+ char Savings[NUM+1];
78
+ char daycount[NUM+1]={100};
79
+
80
+
81
+
82
+
83
+ FILE *fi,*fo;
84
+ /* ファイルのオープン */
85
+ fi=fopen("money.txt","rt");
86
+ fo=fopen("days.txt","wt");
87
+
88
+ if(fi==NULL || fo==NULL){
89
+ fprintf(stderr,"ファイルオープンエラー\n");
90
+ /* 強制終了 */
91
+
92
+ exit(1);
93
+ }
94
+
95
+
96
+
97
+ /* データーの入力 */
98
+ fprintf(stdout"入金する金額を入れてください");
99
+ fprintf(stdout"%d円\n",NUM);
100
+ fprintf(stdin,"入金:");
101
+ fprintf(stdin,"%d",Savings);
102
+ fprintf(stdin,"日目:");
103
+ fprintf(stdin,"%d",daycount);
104
+
105
+
106
+
107
+ /* データー処理 */
108
+ i_sum+=i_payment;
109
+ j_sum+=j_day;
110
+
111
+ /* データーの読み込み */
112
+
113
+ for(i=0; i<1000000; i++){
114
+ i_payment+=i_payment+i_payment
115
+ fprintf("%d\n",i);
116
+ for(j=1; j<=300; j++){
117
+ fprintf("%d\n",j);
118
+ if(i == 101);
119
+ }
120
+
121
+
122
+ }
123
+
124
+ /* ファイル保存・クローズ */
125
+
126
+ fclose(fp);
127
+
128
+ }
129
+
130
+
131
+ 問題を読んで 金額のループと日数のループの為 for文のネストを
132
+ 思いついたのですが・・・
133
+ 順序もばらばらで 途中まででわからなくなって書き込めていなかったりで
134
+ 全く ダメですね すみません(-_-;)
135
+ 自分がどの部分でプログラムに対する考察が出来ていないのか
136
+ その部分で まず ダメな気がしています(><)
137
+
138
+
25
139
  ご教授頂けますと幸いです。
26
140
  どうぞ宜しくお願い致します。

1

修正

2016/06/04 20:21

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -15,6 +15,9 @@
15
15
  マクロ定義で計算処理をすればいいのでしょうか? また こういった計算処理には
16
16
  いくつパターンがあるのでしょうか?
17
17
 
18
+ (自分でコードを書いてみましたが・・・全くダメです こちらも添削頂けますと
19
+ 幸いです。)
20
+
18
21
  自分でそのパターン(while文でも出来るしfor文でも出来るけど ソースコードは短めに
19
22
  簡潔にしたいので その場合はこっちを使おうといった考察)を見つけられると一番いいのでしょうが・・・
20
23