質問編集履歴

2

圧縮の結果

2019/11/16 04:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -78,9 +78,7 @@
78
78
 
79
79
   実際に上記のプログラムを書き換えて、違うプログラムを作りました。
80
80
 
81
- 友達から聞いた話によると、fgetc(stdin)を入れないといけなかったようなので、追加しました。あとは書き換えただけなのですが、プログラミング初心者のため自信がないです。
81
+ 友達から聞いた話によると、fgetc(stdin)を入れないといけなかったようなので、追加しました。あとは書き換えただけなのですが、プログラミング初心者のため自信がないです。また、実際に画像の圧縮をした結果、5つの画像データのうち3つはサイズが小さくなったのですが、2つはサイズが大きくなってしまいました。その原因は何なのか、またこれ以外に効率の良い方法があれば教えていただきたいです。
82
-
83
- これ以外にもっと効率の良いやり方があれば教えていただきたいです。
84
82
 
85
83
  ```c
86
84
 

1

試したプログラムの追記、質問タイトルの変更

2019/11/16 04:05

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- c言語 画像圧縮につ
1
+ c言語 ランレングス法の使方がわかりません
test CHANGED
@@ -76,7 +76,91 @@
76
76
 
77
77
 
78
78
 
79
+  実際に上記のプログラムを書き換えて、違うプログラムを作りました。
80
+
79
-  このプログラムをそのまま書き写し画像データ圧縮して圧縮データのサイズを確めてみたのですが5つとも5バイトになってしまいました。普通それぞれ違うバイト数にりまよね?
81
+ 友達から聞いた話によるとfgetc(stdin)入れないといけなようなので、追加しました。あと書き換えただけのでが、プログラミング初心者のため自信がないです。
82
+
83
+ これ以外にもっと効率の良いやり方があれば教えていただきたいです。
84
+
85
+ ```c
86
+
87
+ #include <stdio.h>
88
+
89
+ int main(void){
90
+
91
+ int a, b, c, d, i, x, y, cnt;
92
+
93
+
94
+
95
+ fgetc(stdin);
96
+
97
+ fgetc(stdin);
98
+
99
+ fgetc(stdin);
100
+
101
+
102
+
103
+ scanf("%d", &a);
104
+
105
+ scanf("%d", &b);
106
+
107
+ scanf("%d", &c);
108
+
109
+
110
+
111
+ d = a * b;
112
+
113
+
114
+
115
+ scanf("%d", &x);
116
+
117
+ y = x;
118
+
119
+ cnt = 1;
120
+
121
+
122
+
123
+ for(i = 2; i <= d; i++){
124
+
125
+ scanf("%d", &x);
126
+
127
+ if(x == y){
128
+
129
+ cnt++;
130
+
131
+ } else {
132
+
133
+ printf("%d %d\n", y, cnt);
134
+
135
+ y = x;
136
+
137
+ cnt = 1;
138
+
139
+ }
140
+
141
+ }
142
+
143
+
144
+
145
+ scanf("%d", &x);
146
+
147
+ if(x == y) cnt++;
148
+
149
+ else cnt = 1;
150
+
151
+
152
+
153
+ printf("%d %d\n", x, cnt);
154
+
155
+
156
+
157
+ return 0;
158
+
159
+ }
160
+
161
+ ```
162
+
163
+
80
164
 
81
165
 
82
166
 
@@ -84,4 +168,4 @@
84
168
 
85
169
 
86
170
 
87
- ここにより詳細な情報記載しさい
171
+ お二人の回答者様のご意見により、内容書き換えさせいたきました