このような課題が出されました。
課題を丸投ではありませんが、どこをどう手をつけ始めればよいかわかりません。
お手数ですがよろしくお願いします。

次のような動作をするプログラムを作成する。
ファイルを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など)を用いずにプログラムすることを推奨.(分数や対数を正確に表せないため,僅かな誤差が切り上げの有無等に影響するため)

このQ&Aに関連する最新のQ&A

A 回答 (2件)

どこから手をつけていいかわからないとのことですが、


肝心要のシャノン符号の作り方はわかってますか?

何もわからないところにいきなりこんな問題が出されるとは思えないので、
ファイルの入出力や、簡単なプログラムは組めると考えていいのですよね?
    • good
    • 0

まず質問主殿は、指定されている4つのプログラム言語の内、使いこなせるものがありますか?



使いこなせるものがあるなら、バブルソートで良いのでプログラムを書いてみてください。
それすら出来ないのなら、問題外ですのでサンプルプログラムをネットで探してお勉強しましょう。

自分でバブルソートぐらいのプログラムが書けるようになったら、次はフローチャートで処理の流れを記述します。
最初は、セネラルフローと呼ばれる大まかな処理の流れを記述するフローチャートを書き(ゼネラルフローは言語を意識せずアルゴリズムの記述を主に考慮して記述する)、それが書けたら次に言語レベルの処理単位に噛み砕いたディテールフローを記述します。
(完全に言語レベルに1:1で対応する必要はありません。言語レベルの処理単位に近い所にまで落とし込めば良い)

ディテールフローが書けたら、それをコーディングします。
コーディングが終わったら、次はデバックを行います。

大まかな流れはこんなもんでしょう。
質問の丸投げでないなら、後はご自身で頑張って下さい。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QC言語のゲームのサンプルプログラムが置いてあって自由に修正できるサイト教えてもらえないでしょうか?

ゲームのサンプルプログラムが置いてあって自由に修正できるサイト教えてもらえないでしょうか?

Aベストアンサー

C言語、自体があまり初心者向けではないのですが、
Cを本気で学ぼうと考えるなら、書籍を購入する事をお勧めします。

「C言語〈1〉はじめてのCプログラミング プログラミング学習シリーズ」
倉 薫 (著)
アマゾン(http://www.amazon.co.jp/)の古本で400円で販売していました。
私が昔、他の人にC言語を教えるときに使った教材ですが非常に簡単でした。
「簡単」というのがポイントで初めてCを学ぶ方から非常に読みやすいと定評があった本です。

ただこれを読んだからといってすぐに市販されているようなゲームが作れるわけではありません。
C言語でゲームを作るのはかなり地道ですし下地になる知識が相当必要です。

とりあえず市販のコンパイラ(コンパイラというのはexe等を作るやつ)は
必要になってから買うので十分です。
先に説明した無償のコンパイラで市販レベルのソフトを作る事も可能なのです。
(市販のものと何が違うかというとマニュアル、ツール、ライブラリ等が付属している点)
やろうと思えばそのツールやライブラリもその無償のコンパイラで作れるわけですから。

また前回とかぶりますが
http://www.kumei.ne.jp/c_lang/bcc/index.html
でBCCというコンパイラをインストールし
http://www.kumei.ne.jp/c_lang/index_c.html
の1章から見ていって実際もexeにして実行してみてください。
このサイトも参考になります。

C言語、自体があまり初心者向けではないのですが、
Cを本気で学ぼうと考えるなら、書籍を購入する事をお勧めします。

「C言語〈1〉はじめてのCプログラミング プログラミング学習シリーズ」
倉 薫 (著)
アマゾン(http://www.amazon.co.jp/)の古本で400円で販売していました。
私が昔、他の人にC言語を教えるときに使った教材ですが非常に簡単でした。
「簡単」というのがポイントで初めてCを学ぶ方から非常に読みやすいと定評があった本です。

ただこれを読んだからといってすぐに市販されている...続きを読む

Qtxtファイルを「,」で区切ったcsvにしたい

txtファイルをcsvに変換しようとしています。
要はカンマ「,」でtxtファイルの中の文字を区切りたいのです
「excelで名前を付けて保存」→「保存するファイル形式」でCSVを選択すればできるのですが、excelを持っておらず困っています。
無料でできる簡単ないい方法はありますか?
ちなみに、open officeやkingsoftの無料officeで「名前を付けて保存」→「保存するファイル形式」でCSVを試してみたのですが、ダメでした。OSはwin7とMacOS10.8を使っています。winでできればベストですが、ダメならMacでも大丈夫です。

Aベストアンサー

どのように区切りたいのでしょうか?

メモ帳で開いて空白を「,」に置換とかいろいろありますけど?
opn officeはどこが良くなかったですか?

QC言語・ゲーム作成で挫折気味の対処方法

こんばんは。ゲーム作成に関わらず、C言語で挫折気味の時、みなさんはどのように対処してきましたか?
以下、私の現在の状況を説明致します。

C言語でゲームを作成するという目的でC言語を勉強し、ゲーム作成の勉強をしていました。
C言語の書籍を一通り行い、DXライブラリを使用して、それに関するサイト(ゲームプログラミングの館等)を参考にしながらゲーム作成の勉強をしていました。
しかし、除々に分からなくなり、手がつけられなくなってしまいました。
ゲームを早く作成してみたいという気持ちが先走り、C言語の知恵が足りない(勉強期間:1ヶ月程度)のに
ゲーム作成に取り掛かろうとしたことがが原因のひとつだと思い、もう一度、C言語を勉強し直そうと考えています。
しかし、数ある書籍やサイトの中でどれがゲームプログラミングを学ぶのに適しているの分かりません。
みなさんがゲームプログラミングをするにあたって利用した書籍やサイトはどのようなものでしょうか?
また、同じようにC言語でゲームを作成している方にお聞きしたいのですが、C言語をどの程度勉強されてからゲーム作成に取り掛かったのでしょうか?

みなさんの意見を参考にして、勉強していきたいので、よろしければアドバイスをお願い致します。

こんばんは。ゲーム作成に関わらず、C言語で挫折気味の時、みなさんはどのように対処してきましたか?
以下、私の現在の状況を説明致します。

C言語でゲームを作成するという目的でC言語を勉強し、ゲーム作成の勉強をしていました。
C言語の書籍を一通り行い、DXライブラリを使用して、それに関するサイト(ゲームプログラミングの館等)を参考にしながらゲーム作成の勉強をしていました。
しかし、除々に分からなくなり、手がつけられなくなってしまいました。
ゲームを早く作成してみたいという気持ちが先...続きを読む

Aベストアンサー

私は、最初の頃は「SDL」を使って2Dゲームを作っていました。
その頃は、C言語は関数もあまり分かっていませんでした。
ですけど、勉強し直して「OpenGL」で3Dの簡単な動きなら動かせるようになりました。
今は作っていませんけど。

私が勉強に使った本を紹介します。
C言語の本
「図解C言語 ポインタの極意」
「新版 明解C言語 入門編」

C++言語の本
憂鬱なプログラマのためのオブジェクト指向開発講座

どのくらいC言語を理解しているか分かりませんけど、
分からないものが多く載っていて分かりやすい本を立ち読みをして、
探した方がいいと思います。

ゲームは2Dでしょうか?
それとも、3Dでしょうか?
3Dでしたら物理などが分からないと無理です。
物理の本(プログラムも載っています)
「ゲーム開発のための物理シミュレーション入門」

C++言語が分かれば、
「ゲームプログラマになる前に覚えておきたい技術」
がいいらしいです。

Q5ビット誤り訂正符号の符号語間最小距離

5ビット誤り訂正符号の符号語間最小距離はどのように求めたらよいのでしょうか。分かりやすく説明していただけると幸いです。

Aベストアンサー

5bitかどうかは知りませんが、
誤り訂正したいならbit数によらず最小符号間距離は3ではないでしょうか?
この場合1bit誤りまでは訂正できます。

まあ、分類して考えましょう。

・1bit狂っただけで他の符号と同じになってしまう場合。
ある符号が1bit狂うと他の符号と重なるということは、最小符号間距離は1です。
この場合、1bit狂っただけで他の符号と同じになってしまい、
その結果が正しいのか誤りがあるのか区別がつきません。

・1bit狂っただけでは他の符号と同じにはならないが、もう1bit(つまり2bit)狂うと同じになる場合。
ある符号が2bit狂うと他の符号と重なるということは、最小符号間距離は2です。
この場合、1bit狂うと、符号として定義されていないビットパターンになり、
誤りが生じたことは分かります。
しかし、それがいったいどの符号で1bit狂ってそうなったかまでは分かりません。
つまり1bit誤り検出可能ということになります。

・1bit狂っただけでは他の符号と同じにはならず、もう2bit(つまり3bit)狂って初めて同じになる場合。
ある符号が3bit狂うと他の符号と重なるということは、最小符号間距離は2です。
この場合、1bit狂うと、符号として定義されていないビットパターンになり、
誤りが生じたことは分かります。
さらに1bit狂ってそうなる符号は1つしかありません。
だからたぶんその符号が1bit狂ってそうなったのだろうと推定できます。
他の符号が狂ってそうなるには、2bit以上狂う必要があるからです。
つまり1bit誤り訂正可能ということになります。

5bitかどうかは知りませんが、
誤り訂正したいならbit数によらず最小符号間距離は3ではないでしょうか?
この場合1bit誤りまでは訂正できます。

まあ、分類して考えましょう。

・1bit狂っただけで他の符号と同じになってしまう場合。
ある符号が1bit狂うと他の符号と重なるということは、最小符号間距離は1です。
この場合、1bit狂っただけで他の符号と同じになってしまい、
その結果が正しいのか誤りがあるのか区別がつきません。

・1bit狂っただけでは他の符号と同じにはならないが、もう1bit(つ...続きを読む

QC言語でプログラムを再起動

 UNIXで動くC言語のプログラムを作っています。
 その際、プログラムを再起動させたい時があります。
 しかし、C言語でプログラムを再起動させるってどうやればいいのかよくわかりません。
 何かよいやり方を知っている方、教えてください。
 よろしくお願いします。

Aベストアンサー

関数execl()を使えばよいと思います。
この関数は、fork()と組み合わせて、他のプログラムを
起動するのに使うのが普通ですが、
fork()せずにexecl()を呼ぶと、自プロセスを指定された
プログラムに置き換えます。ですので、ここで自分自身を
指定すれば、再起動したことになるはずです。

Qテキストファイル( .txt )の送信方法

学校の無線LANに2台のノートパソコンを接続して、データの通信実験のようなことをやろうと考えています。

パソコンAでプログラムを実行し、結果をテキストファイル( .txt形式) に出力。そのテキストファイルを "何らかの方法" でパソコンBに送り、パソコンB側のプログラムでそれを読み取り、実行結果を表示したいと考えています。

プログラムは、C言語でやろうと思ってます。テキストファイルを送るよい方法をご存知でしたら、教えていただきたいです。

Aベストアンサー

WINAPIが使えれば簡単にできます。
http://yonex1.cis.ibaraki.ac.jp/~yonekura/2002kadai/lecture03.html
実際にはもっとパッケージ化されたWINAPIがあったと思います。

QC言語でゲーム作り

フリーゲームに影響され、自分も作ってみたいと思いC言語勉強し始めました
趣味の範囲で、こつこつ頑張っていこうと思ってます

今現在、C言語の初初心者向けの本を一通り読み終えて次の本を読んでます
一応、一つの目標としてアクションゲーム(マリオみたいな)を作りたいんですが
C言語の他にどんなこと勉強すればいいでしょうか?

あと、C言語から次のステップに移るときは
やはり上級者向けの本は理解できるくらいまで頑張ってからでしょうか?

Aベストアンサー

とりあえずCだけではなく、C++まで一通り学習することをお勧めします。
PCゲームなのかどうか、Windows上のものなのかどうかわかりませんが、C/C++系の場合は、C++使っていることが多いので、C++知っているのと知らないのとでは、サンプルだとかライブラリとか理解できないかもしれないので。

仮にWindowsアプリだとして、API叩いてGDIで描画するか、DirectXを使うかというところもありますね。
2Dの横スクロールならGDIでも可能でしょうけど、後々のことを考えるとDirectX使えるように勉強したほうが、楽だしいろいろなことができるようになります。
DirectXはC++なので、やはりC++になります。

ちょっと戻ってしまいますが、Windowsアプリを作るのであれば、CやC++言語だけではだめで、WindowsAPIを使う必要があります。
まぁ一種のライブラリだと思えばよいですけど。

とりあえず、C/C++の入門書を一通りみて、どのような文法や制約などがあるか理解し(覚えなくてOK)、実際のサンプルソースなどをいじったり改良したりして実際の動作を見ていくのがよろしいかと。
コンソールでのC/C++がある程度わかってきたら、WindowsAPIやDirectXなどの入門書を見ていくといいのではないかとおもいます

とりあえずCだけではなく、C++まで一通り学習することをお勧めします。
PCゲームなのかどうか、Windows上のものなのかどうかわかりませんが、C/C++系の場合は、C++使っていることが多いので、C++知っているのと知らないのとでは、サンプルだとかライブラリとか理解できないかもしれないので。

仮にWindowsアプリだとして、API叩いてGDIで描画するか、DirectXを使うかというところもありますね。
2Dの横スクロールならGDIでも可能でしょうけど、後々のことを考えるとDirectX使えるように勉強したほうが、楽だ...続きを読む

Q大容量のファイルを圧縮出来る圧縮形式トについて

大容量のファイルを圧縮できる形式(ソフト)を探しています。
ファイルの容量は約15GBくらいです。

これくらいのファイル容量を圧縮できる
圧縮形式をご存知の方

この圧縮形式だと圧縮できるファイルサイズは
MAX○○GBまでみたいな情報を表示しているサイトをご存知の方

教えていただけないでしょうか?

圧縮できる最大容量という情報は意外に少なくて困っています


ちなみに現在ファイルの分割は想定していません。

Aベストアンサー

7zipなんていう圧縮形式があります。
アプリケーションはオープンソースで現在開発が進んでますが、使用にはあまり差し支えないレベルまできてます。(現在ver4.23)

フォーマットの仕様書(http://www.7-zip.org/7z.html)を見ると、結構大容量までサポートしているようですが、実際にこんなに大きなサイズのファイルを扱えるかどうかは試したことないです。
(というかこのサイズだと、フォーマットの限界以前にファイルシステムの制限が来る)

過去にSQL Serverのバックアップファイルをネットワーク越しに送信するためにこのソフト使って圧縮しましたが、そのときのファイルサイズは2~3GB程度でした。15GBが実際に扱えるかどうかは試してみないと何とも言えないです。

なお、提示したURLはすべて英語ですが、7zipのアプリケーション自体は日本語のメニューにすることが可能です。

参考URL:http://www.7-zip.org/

QC言語のプログラム集

こんにちは。C言語のテキストにはプログラムとその説明が書いていますが、
このC言語のプログラムが多くのっているような本はありますか?本屋さんで探したのですが、プログラムがものすごく多くのっているようなものがなかったので、もしお分かりの方がおられましたが、本の紹介をお願いします。

Aベストアンサー

C言語ということでどうしても古い本になってしまいますが
下記URLのような本はどうでしょうか。
http://oku.edu.mie-u.ac.jp/~okumura/algo/
http://www.amazon.co.jp/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A1%E3%83%AA%E3%82%AB%E3%83%AB%E3%83%AC%E3%82%B7%E3%83%94%E3%83%BB%E3%82%A4%E3%83%B3%E3%83%BB%E3%82%B7%E3%83%BC-%E6%97%A5%E6%9C%AC%E8%AA%9E%E7%89%88%E2%80%95C%E8%A8%80%E8%AA%9E%E3%81%AB%E3%82%88%E3%82%8B%E6%95%B0%E5%80%A4%E8%A8%88%E7%AE%97%E3%81%AE%E3%83%AC%E3%82%B7%E3%83%94-William-H-Press/dp/4874085601

ご参考になれば幸いです。

Q画像のファイルを圧縮するのは圧縮率はZIP/LHZのどちらがいいの?

よく仕事で画像(jpg)のファイルを使うのですが、バックアップのときに圧縮するのは、ZIP・LHZのどちらの方が圧縮率がよいのでしょうか?
 また、画像なら他の圧縮形式の方がよいとかあるのでしょうか?
 わかる方は教えてくださいおねがいします。

Aベストアンサー

圧縮率で見ると
LZHとZIPではわずかにZIPの方が
よくなることが多いように思います。

といってもjpgは既に圧縮されているので2重に圧縮しようとしても
ほとんど小さくなりませんので差は微々たる物だと思います。

LZHは日本国内では(多分)一番の普及率ですが、
海外ではZIPの方が有名なので海外とのやり取りには
ZIPのほうがよいと思います。

また仕事で使用するとの事ですので
メールなどでのやり取りの際には第3者に見られないように、
パスワードを掛けるのがよいと思います。
その場合にはZIPを使用することになります。

他の圧縮形式のほうが圧縮率が高いのですが、
圧縮・解凍にソフトを追加する必要がある場合もあるので、
仕事にはお勧めしかねます。


人気Q&Aランキング

おすすめ情報