• 締切済み

情報処理課題

課題が分かりません;;お願いします 次のような動作をするプログラムを作成する。 ファイルをShannon符号を用いて圧縮し,圧縮ファイルを作成する.また,Shannon符号で圧縮されたファイルを読み込み,解凍されたファイルを作成する. 圧縮対象のファイルはテキストファイルとし,出現する可能性のある文字は,a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p の16文字の内の何れかとする.ファイルの長さは4096文字以内で,一行に書かれている. 圧縮ファイルもテキストファイルとし,先頭の16行は,各文字に対する符号を文字の「0」,「1」を使って一行に一つずつ書く(符号を割り当てない場合は何も書かない). 17行目に符号化されたbit系列を文字の「0」,「1」を使って一行で書く. (本来バイナリで書けば1/8のサイズになるが,簡単のため文字にする) 解凍されたファイルは,圧縮前の元のファイルと同じになるように作る. 「srcdata0~2.txt」及び「encoded0~2answer.txt」は,作成したプログラムが正しく動作するかどうかをチェックするためのサンプルファイルである. 「srcdata3.txt」を圧縮したファイルを「encoded3.txt」として,提出すること. 「encoded4.txt」を解凍したファイルを「decoded4.txt」として,提出すること. ソースプログラムも提出すること. プログラム言語はC言語,C++,java,C#の何れかで作成のこと.特にC,C++は標準ライブラリのみを用い,gcc,g++,又はVisual C++でコンパイル可能なこと. C言語はファイル入出力関係が煩雑なので,サンプルプログラム「shannon.c」をベースに作成すること. C言語では,文字列関数(#include <string.h>)を使わないこと. 改行コードはOS依存だが,特に気にする必要はない.必要があれば変換して良い.EOFコードは不要. 上級者は,浮動小数点型(double, floatなど)を用いずにプログラムすることを推奨.(分数や対数を正確に表せないため,僅かな誤差が切り上げの有無等に影響するため)

みんなの回答

  • arrysthmia
  • ベストアンサー率38% (442/1154)
回答No.2

コードの書き方を尋ねたいのなら、 >>[技術者向]コンピュータ>プログラミング>>C&C++ で質問するのが適切です。 尤も、アチラは、課題の丸投げに対して 数学板のように寛容ではありませんから、 「シャノン符号が何だか解ってから来い」と 言われて、ココに戻ってくることに なるかもしれませんが…

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

で, どこが分からないんでしょうか?

関連するQ&A

  • 課題

    このような課題が出されました。 課題を丸投ではありませんが、どこをどう手をつけ始めればよいかわかりません。 お手数ですがよろしくお願いします。 次のような動作をするプログラムを作成する。 ファイルをShannon符号を用いて圧縮し,圧縮ファイルを作成する.また,Shannon符号で圧縮されたファイルを読み込み,解凍されたファイルを作成する. 圧縮対象のファイルはテキストファイルとし,出現する可能性のある文字は,a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p の16文字の内の何れかとする.ファイルの長さは4096文字以内で,一行に書かれている. 圧縮ファイルもテキストファイルとし,先頭の16行は,各文字に対する符号を文字の「0」,「1」を使って一行に一つずつ書く(符号を割り当てない場合は何も書かない). 17行目に符号化されたbit系列を文字の「0」,「1」を使って一行で書く. (本来バイナリで書けば1/8のサイズになるが,簡単のため文字にする) 解凍されたファイルは,圧縮前の元のファイルと同じになるように作る. 「srcdata0~2.txt」及び「encoded0~2answer.txt」は,作成したプログラムが正しく動作するかどうかをチェックするためのサンプルファイルである. 「srcdata3.txt」を圧縮したファイルを「encoded3.txt」として,提出すること. 「encoded4.txt」を解凍したファイルを「decoded4.txt」として,提出すること. ソースプログラムも提出すること. プログラム言語はC言語,C++,java,C#の何れかで作成のこと.特にC,C++は標準ライブラリのみを用い,gcc,g++,又はVisual C++でコンパイル可能なこと. C言語はファイル入出力関係が煩雑なので,サンプルプログラム「shannon.c」をベースに作成すること. C言語では,文字列関数(#include <string.h>)を使わないこと. 改行コードはOS依存だが,特に気にする必要はない.必要があれば変換して良い.EOFコードは不要. 上級者は,浮動小数点型(double, floatなど)を用いずにプログラムすることを推奨.(分数や対数を正確に表せないため,僅かな誤差が切り上げの有無等に影響するため)

  • ハフマン符号のプログラム

     以下の問題に回答できる方,いらっしゃいましたらソースファイルと実行結果を送ってください。  ファァイル(記号列)を読み込んで,ハフマン符号によりファイルを圧縮するプログラム(C言語)を作成する(プログラムは,圧縮を行うものと,解凍を行うものの2つ作る)。また,いくつか適当なファイルに対して,圧縮を行い圧縮率を測定する。 (1)圧縮プログラムについて  圧縮のステップ  (a)入力ファイルを読み込み各記号の出現頻度をカウントする。  (b)得られた出現頻度を使って各符号のハフマン符号を生成する。  (c)各符号の出現頻度を出力ファイルに書き出す。  (d)もう一度入力ファイルを読み込みながら各符号をハフマン符号で置き換え    て出力ファイルに出力する。圧縮ファイルの形式は次のようになる。   0x00の  0x01の … 0xffの 先頭文字の 2文字目の … 終端文字の   出現頻度 出現頻度 出現頻度 符号語   符号語    符号語    (c)で書きこむ部分      (d)で書きこむ部分 (2)解凍プログラムについて  解凍のステップ  (a)各符号の出現頻度を圧縮ファイルから読み込む。  (b)得られた出現頻度を使って各符号のハフマン符号を生成する。  (c)圧縮ファイルの符号語を読み込みながら各符号のハフマン符号と比較しも    し一致したらその記号を解凍ファイルに出力する。  (d)(c)をファイルの終わりもしくは出現頻度をすべて足し合わせた記号数分処   理するまで繰り返す。  関数について  関数get_bit  ファイルから1bit読み込んで戻り値として返す。  (ファイルポインタはグローバル変数で用意する)  関数put_bit  引数として0,または1を渡すと1bitずつファイルに書き込む。  (ファイルポインタはグローバル変数で用意する)

  • 圧縮(lzh)を解凍するvbのサンプルありませんか?

    圧縮(lzh)を解凍するvbのサンプルありませんか? インプットFILE aaa.lzh・・・lha形式の圧縮ファイル アウトプットFILE aaa.txt・・・aaa.lzhを解凍したファイル プログラム仕様 aaa.lzhを読み込み、解答してaaa.txtに出力する。

  • C言語でこんなことは可能ですか?

    現在あるプログラムを作りたいと思いC言語の勉強をしています。 それに伴い、下記のプログラムはC言語で作成可能でしょうか。 例) Aのフォルダ内にbというファイル(txt)があるとして、 bのファイル内の「ありがとう」という文字を検索し表示させるプログラム は作成可能でしょうか。表記としては --------------------------------- ファイル名 | 検索文字 ---------------------------------  A    | ありがとう  -------------------------------- としたいと思っているのですが・・・ よろしくお願いします。

  • C言語についてです。

    C言語についてです。 次のようなテキストファイルがあるとします。 ------------------------------------- Sample.txt ------------------------------------- 項目一  項目二  項目三 1      2     1 2      1     3 3      3     1 ------------------------------------- 一行目が文字列、2行目以降が整数というファイルです。 このファイルを読み込み、1行目の文字列を表示し、2行目以降を読み込んでn行3列の配列に入れ更に表示したいのですが、どのように書けばいいのでしょうか? 宜しくお願いします。

  • JAVAでフォルダ圧縮時のZipEntry作成方法

    JAVAでZIP圧縮プログラムを作成したのですが ZipEntry作成時にファイル名を引数にすれば問題なく解凍できたのですが フォルダ名やフォルダ内のファイル等を指定するとXP等で解凍できなくなってしまいました。 書式が間違っているのでしょうか? 何か方法やサンプルがありましたらよろしくおねがいします。 ZipEntry target = new ZipEntry("test.txt"); ←コレは解凍できました。 以下の用に書くと解凍できない ZipEntry target = new ZipEntry("folder\\"); ZipEntry target = new ZipEntry("folder\\test.txt"); ZipEntry target = new ZipEntry("\\folder\\test.txt");

    • ベストアンサー
    • Java
  • jpeg画像をより小さく圧縮するために

    現在卒業研究で「画像圧縮によるホームページの高速表示」というテーマを研究しています。これは (1)自PCにサーバソフトをインストール (2)HTMLファイル内に含まれる画像ファイルを圧縮するプログラムをそれに組み込む (3)圧縮処理したHTMLファイルに解凍プログラムを添付、送信 (4)受信側でHTMLファイル内の画像を解凍、ページを表示 というのが大まかな流れです。 そこで、jpegファイルの圧縮に有効なプログラムをハフマン符号化をベースにCで作っているのですが、現在のjpegの規格に使われているハフマン符号化アルゴリズムよりもさらに圧縮率の高いプログラムを作らなければなりません。ちなみに差分値化処理は試しましたがあまり効果はありませんでした。 おおまかなご説明で構いませんので、何か有効な方法があればなにとぞご教授ください。よろしくお願いします。

  • C言語の課題(関数)での質問です。急いでます。

    C言語の課題(関数)での質問です。急いでます。 C言語の関数のプログラミングついて、ご教授お願いします。 下記のプログラムを関数を用いて実行したいのですが、どのようにすれば良いでしょうか? 回答(できたら簡単な解説)の明記をお願いします。 問題1:入力したプログラムから以下のように出力するプログラムを作成する。 (実行結果例) 文字列を入力: 今日は、晴れです。 今日は、晴れです。 日 す は で 、 れ 晴 晴 れ 、 で は す 日 。すでれ晴、は日今 問題2:ファイル入力した漢字データ(全角)を読み込み、行数を数えながら逆から表示するプログラム。 (実行結果例) (例として次のような C:\test2.txtを入力する) 今日は、晴れです。昨日は、雨で した。明日は、曇でしょう。明後 日は、快晴でしょうか。 ←の文章を以下のようなプログラムにする。 ファイル名を入力してください:C:\test2.txt 1:で雨、は日昨。すでれ晴、は日今 2:後明。うょしで曇、は日明。した 3:。かうょしで晴快、は日 問題3:ファイルのデータ(英文)を読み込み、一行毎の文字数(スペースも含む)とワード数を数えるプログラム。 (実行結果例) (例として次のような C:\test3.txtを入力する) And friends just can't be found Like a bridge over troubled water I will lay me down ←の文章を以下のようなプログラムにする。 ファイル名を入力してください:C:\test3.txt 1:And friends just can't be found ⇒31文字、6ワード 2:Like a bridge over troubled water ⇒33文字、6ワード 3:I will lay me down ⇒18文字、5ワード 問題4:1月1日が金曜日の平年(たとえば2010年)について、月日の入力データから、曜日を求めるプログラム。 (実行結果例) 月を入力してください:9 日を入力してください:15 9月15日は、水曜日です。 以上4問です。どうか回答よろしくお願い致します

  • C言語の課題(関数)での質問です。急いでます。

    C言語の課題(関数)での質問です。急いでます。 C言語の関数のプログラミングついて、ご教授お願いします。 下記のプログラムを関数を用いて実行したいのですが、どのようにすれば良いでしょうか? 回答(できたら簡単な解説)の明記をお願いします。 問題1:入力したプログラムから以下のように出力するプログラムを作成する。 (実行結果例) 文字列を入力: 今日は、晴れです。 今日は、晴れです。 日 す は で 、 れ 晴 晴 れ 、 で は す 日 。すでれ晴、は日 今 問題2:ファイル入力した漢字データ(全角)を読み込み、行数を数えながら逆から表示するプログラム。 (実行結果例) (例として次のような C:\test2.txtを入力する) 今日は、晴れです。昨日は、雨で した。明日は、曇でしょう。明後 日は、快晴でしょうか。 ←の文章を以下のようなプログラムにする。 ファイル名を入力してください:C:\test2.txt 1:で雨、は日昨。すでれ晴、は日今 2:後明。うょしで曇、は日明。した 3:。かうょしで晴快、は日 問題3:ファイルのデータ(英文)を読み込み、一行毎の文字数(スペースも含む)とワード数を数えるプログラム。 (実行結果例) (例として次のような C:\test3.txtを入力する) And friends just can't be found Like a bridge over troubled water I will lay me down ←の文章を以下のようなプログラムにする。 ファイル名を入力してください:C:\test3.txt 1:And friends just can't be found ⇒31文字、6ワード 2:Like a bridge over troubled water ⇒33文字、6ワード 3:I will lay me down ⇒18文字、5ワード 問題4:1月1日が金曜日の平年(たとえば2010年)について、月日の入力データから、曜日を求めるプログラム。 (実行結果例) 月を入力してください:9 日を入力してください:15 9月15日は、水曜日です。 以上4問です。どうか回答よろしくお願い致します

  • 文字化けして困っています。

    マックで作成した複数のテキストを圧縮して、ウィンドウズで解凍し開くと バグってしまいます。どなたかご教授お願いします 私の操作手順と環境は G5 10.4.11で Mac用のMicrosoft Office 2004のWordにて 文章を数十ファイル作成しています。 (保存するときは、テキストのみ 拡張子.txtで保存しています。) それから、フォルダの中にファイルを入れて CocoaZipとゆうフリーソフトで複数のファイルを圧縮して ウィンドウズユーザーに送っているのですが 解凍してファイルを開いてみると どうしても文字がバグってしまうみたいです。 また、一つの.txtファイルだけ送ると大丈夫だったのですが 複数をファイルを圧縮してす送ると、文字化けしてしまう様です。 これは、圧縮方法が間違っているのでしょうか? どなたか、原因や解決法が解る方いらっしゃいましたら ご教授のほど、宜しくお願いします。

    • 締切済み
    • Mac