C/C++の宿題を片付けます 91代目
■ このスレッドは過去ログ倉庫に格納されています
0885デフォルトの名無しさん
2007/07/02(月) 21:57:55どうやったら改善できるでしょうか・・・
問題文:あるファイルの中にデータとして多くの0と1が書き込まれており、最後の1文字だけがEであるとする。
このとき、0と1の並びに着目し、データを圧縮することを考える。ここでは、0と1のそれぞれが何個連続して並んでいるかを記録することで圧縮を行う。
たとえば、digit1.datというファイルに111110000000000000000000000001E
というように0と1が並んでいるとき、7 1 24 0 1 1と圧縮できる。このとき圧縮結果に空白を挟むことに注意する。
上記の圧縮方法に従って、任意の0と1から成るデータを圧縮するプログラムを作成せよ。
ただしデータはリダイレクションを使用し、char型変数の1文字ずつ繰り返し世も困れるものとする。
最後には「圧縮完了」と表示のこと。
#include <iostream>
using namespace std;
int main()
{
char data;
int n;
cout<<"圧縮結果:";
while (cin>>data && data!= 'E')
{
for (n=1;cin>>data && data!='0' && data!='E';n++){}
cout <<n<<" 1 ";
for (n=1;cin>>data && data!='1' && data!='E';n++){}
cout <<n<<" 0 ";
}
cout <<endl;
cout << "圧縮完了"<<endl;
return 0;
}
data:111111111000011111110000000E
実行結果:
圧縮結果:9 1 4 0 6(ここを7にしたいです。) 1 7 0
■ このスレッドは過去ログ倉庫に格納されています