忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


2026/06/24 08:09 |
圧縮 ☆ランレングス法☆ 其の参
前回のランレングス法の圧縮プログラムは10文字以上連続した場合にうまく圧縮できませんでしたが、その部分を修正しました。
修正前:aaaaaaaaaa→@1a
修正後:aaaaaaaaaa→@9aa
となりました。効率的な圧縮ではないにしろ、不具合のない形で修正できたので、とりあえず完成ということで!
O(≧∇≦)O

ここからソース
/********************************/
/* ランレングス 圧縮 */
/* ver 0.0.2 */
/* build 20060825.1 */
/********************************/
#include‹stdio.h›
#include‹string.h›

int main(void)
{
char s[128],p[128],q[20];
int i,j,c;

printf("\n***** ランレングス圧縮プログラム ver0.0.2 *****\n\n");
printf("文字列を入力してください.(但し,連続する文字列は9文字以内)\n");
gets(s);

i=0;
j=0;
c=1;

while(s[i]!='\0'){
i=i+1;
if(s[i-1]!=s[i]){
if(c<=2){
while(c!=0){
p[j]=s[i-c];
c=c-1;
j=j+1;
}
}
else{
p[j]='@';
sprintf(q,"%d",c);
p[j+1]=q[0];
p[j+2]=s[i-1];
j=j+3;
}
c=1;
}
else{
if(c==9){
p[j]='@';
sprintf(q,"%d",c);
p[j+1]=q[0];
p[j+2]=s[i-1];
j=j+3;
c=1;
}
else{
c=c+1;
}
}
}

p[j]='\0';

printf("圧縮前の文字列=%s\n",s);
printf("圧縮後の文字列=%s\n",p);

printf("\n何かキーを押してください.");
gets(q);
return 0;
}

それでは実行結果
***** ランレングス圧縮プログラム ver0.0.2 *****

文字列を入力してください.(但し,連続する文字列は9文字以内)
aaaaaaaaaaaaaa
圧縮前の文字列=aaaaaaaaaaaaaa
圧縮後の文字列=@9a@5a

何かキーを押してください.

PR

2006/08/25 12:57 | Comments(0) | TrackBack() | プログラム
圧縮 ☆ランレングス法☆ 其の弐
さてと、とりあえずC言語を使って書いてみることにしました。
コンパイラーは「Borland C++ 5.5.1」を使用することにします。

ただ・・・10文字以上連続したときにうまく表示されないので、修正せねばいけませぬ。
.・゜゜・(/。\)・゜゜・.
とりあえず、うまくは動いているものの、雑誌に出ていた擬似言語を自分なりに書いただけなので、何もない状態から作れといわれても・・・つ・く・れ・な・い・と思うのです(;´д` )

これが、初心者プログラマーの悩みどころなのよね。しかし、書かなければ始まらない!!もっといいものに仕上げるぞい。

ここからソース
/********************************/
/* ランレングス 圧縮 */
/* ver 0.0.1 */
/* build 20060818.1 */
/* 連続する文字列は9文字以内 */
/********************************/
#include‹stdio.h›
#include‹string.h›

int main(void)
{
char s[128],p[128],q[20];
int i,j,c;

printf("\n***** ランレングス圧縮プログラム ver0.0.1 *****\n\n");
printf("文字列を入力してください.(但し,連続する文字列は9文字以内)\n");
gets(s);

i=0;
j=0;
c=1;

while(s[i]!='\0'){
i=i+1;
if(s[i-1]!=s[i]){
if(c<=2){
while(c!=0){
p[j]=s[i-c];
c=c-1;
j=j+1;
}
}
else{
p[j]='@';
sprintf(q,"%d",c);
p[j+1]=q[0];
p[j+2]=s[i-1];
j=j+3;
}
c=1;
}
else{
c=c+1;
}
}

p[j]='\0';

printf("圧縮前の文字列=%s\n",s);
printf("圧縮後の文字列=%s\n",p);

printf("\n何かキーを押してください.");
gets(q);
return 0;
}

それでは実行結果
***** ランレングス圧縮プログラム ver0.0.1 *****

文字列を入力してください.(但し,連続する文字列は9文字以内)
aaaaaabbccccc
圧縮前の文字列=aaaaaabbccccc
圧縮後の文字列=@6abb@5c

何かキーを押してください.


2006/08/17 05:54 | Comments(0) | TrackBack() | プログラム
圧縮 ☆ランレングス法☆ 其の壱
さてと、
開発言語をどうするか?
といっても、C言語かPHP言語しか今のところ選択肢はないんですけど…(×_×;)

ということで、C言語でとりあえず動くようにしてから、PHPに移植!!

というか、Web上で圧縮を実感できるようにPHPを使って作っていきたい(希望)
そもそも、高校教員のitecですから、Web上で動くほうが生徒への実習をさせやすいのです。

しかし…実際は…
数時間かけて作成したプログラムを生徒実習させた場合…
 itec「よし、これから圧縮処理をコンピュータにさせてみるぞ」
 生徒「カチカチ(クリックの音)」数分後…
 itec「いや~、コンピュータってすごいね~」
数分で実習が終了してしまいます。これって、効果あるのかな?

2006/08/17 03:38 | Comments(0) | TrackBack() | プログラム
圧縮について考える ☆そろそろプログラミング☆
プログラミングの勉強を目的に発足したこのBlog。

まったく進んでいないことに気がつく・・・(;´д` )

とりあえず、圧縮について考えることにしようかな~。

ん~、でも初心者のitecがいきなりは難しいので、とりえず・・・
『ランレングス法』から始めよう!!o(^-^)o

引っ張り出したのは、数年前に購入した「合格情報処理」(学研の月刊誌)なのです。基本情報処理技術者の資格を取ろうと思い、数年前は定期購読していたのです。しかし・・・一回受験して午後で粉砕したために、プログラミングを一回勉強しなおしてから受験しなおそうと思っているのです。

さて、数年前というのは、2001年の4月号です。擬似言語の説明でランレングス法が例として出されているので、これを自分で使える形にしてみようと決心(^m^ )

さてと、がんばってみるか。

------------------------------------
ランレングス法
「データの圧縮法にはさまざまな方法があるが、もっとも簡単な方法として、文字列中の3文字以上連続する文字や空白を「その文字+文字数」で表すことによって文字列長を短くする方法」
(合格情報処理2001年4月号より引用)
つまり、
aaaaaaa → @7a
のように、「圧縮を示す記号(@)+文字数+文字種」の形で表すと、4文字以上連続した場合はデータ容量が少なくなるのです。
------------------------------------

2006/08/16 08:00 | Comments(0) | TrackBack() | プログラム
USB2.0 to SATA+IDE CABLE
有限会社フリーダム製の「USB2.0 to SATA+IDE CABLE」を購入しました(-^〇^-)
これは、SATAやIDEのハードディスクをUSB経由でつなぐケーブルです。内蔵用のハードディスクを外付け感覚で扱えるのです。
Freedom1 Freedom2

以前から、仕事の関係上数GBのハードディスクが手元に何台かあり、ディスクトップのPCに付けるには容量が少なすぎるし、かといって捨てるのはもったいないし…

と悩んだあげく、保存用メディアのような感覚で扱えばよいことに気がついたのです。つまり、
・頻繁な読み書きをしない
・バックアップ用である
・データ容量が数GBになる
のような条件を満たすデータをPC上からハードディスクに移し変えることにしたのだ(* ̄∇ ̄*)

というわけで、データの整理でもするか。

2006/08/16 05:34 | Comments(0) | TrackBack() | ハード

<<前のページ | HOME | 次のページ>>
忍者ブログ[PR]