ページ 11

教えてください

Posted: 2012年7月05日(木) 15:26
by ほほほん
プログラミングの演習
1.ファイル内の英数字の文字数を数えるⅠ
 sample.txt を入力ファイルとし,このファイル内の各英数字の文字数を数え,結果を指定されたファイルへ書き出すプログラムを作成しなさい.なおデータ構造及び関数仕様は,以下に指定したものを必ず利用すること.


(準備)このテキストファイルを sample.txtという名前で保存しなさい.


(結果)このテキストファイルのような結果になればプログラムは正しい.diff コマンドを利用して一致しているかを調べよう.


コマンド仕様は次のようにする.(count は各自が作成するプログラムの実行ファイル名とする)

count 入力ファイル名  結果のファイル名

カウントする文字は,英数字のみとする.大文字と小文字は区別する.その他の文字は無視してよい.


プログラムを作成する際の注意,基本的な考え方

英数字を表わす文字コードは,ASCIIコード表にあるコードで記述されている.


0から9,aからz, AからZは連続した数で表されている.


ファイルから読んだ文字が0から9,aからz,及びAからZであるかどうかを判断し,該当する文字の数をそれぞれ数えるプログラムを作ればよい.


0から9,aからz,AからZの間の文字であるかどうかは,以下の関数を利用してよい.詳細は,各関数のマニュアルを参照のこと.なお,以下の関数はすべて利用するのではなく,適宜利用すればよい

isalnum() 英数字かどうか
isdigit() 数字かどうか
isalpha() 英字かどうか
isupper() 大文字かどうか
islower() 小文字かどうか


データ構造

struct CharCount 型の配列を作成し,配列のインデックスと文字コードの関係付けをする.

struct CharCount {
char c; /* 文字 */
int num; /* 表れた数 */
};



/*
* 定数マクロを記述する.
*/
#define NUM 0 /*数字の先頭インデックス */
#define LOWER 10 /* 英小文字の先頭インデックス */
#define UPPER 36 /* 英大文字の先頭インデックス*/
#define MAX 62 /* 配列の最大数*/


以下の配列は、mainで宣言する.

/*
* 配列内のデータの意味
*
* 0 - 9 数字
* 10-35 小文字
* 36-61 大文字
*/
struct CharCount array[MAX];



関数仕様

/*
* CountChar --- 指定された文字数を数える.
*
* 引 数 array(I/O) 文字数を記録する配列
* c(I) 新たにカウントする文字
* 返り値 なし.
*/
void CountChar (struct CharCount *array, int c)


(ヒント)
 読み込んだ文字から配列のインデックスを得るにはどうするか?

ASCII コード表では,0-9, a-z, A-Z は昇順に並んでいることを利用する.
文字同士の引き算をするとどうなるか考えよう.

この問題解き方おしえてください><

Re: 教えてください

Posted: 2012年7月05日(木) 15:31
by naohiro19
この掲示板にはルールが存在します

Re: 教えてください

Posted: 2012年7月05日(木) 17:26
by asd
すでに指摘もありますが、この掲示板では問題の丸投げは禁止されています。
ルールを守った投稿をお願いします。
ほほほん さんが書きました: (準備)このテキストファイルを sample.txtという名前で保存しなさい.
(結果)このテキストファイルのような結果になればプログラムは正しい.diff コマンドを利用して一致しているかを調べよう.
どこぞの学校の課題かと思いますが、Webページを丸々コピー&ペーストされているので、
上記の読み込むべきファイルと実行結果が確認できません。
ほほほん さんが書きました: この問題解き方おしえてください><
あなたがどこまで自力でできるのか教えてください。
・Hello,world!を出力するプログラムはかけますか?
・プログラムのコンパイルと実行はできますか?
・ファイルの読み込み処理はわかりますか?
・配列は使えますか?
・構造体は使えますか?

あと、どこぞの学校の課題かと思いますが、期限があるのであれば明示してください。

手順としては、
1.ファイルを読み込む
2.ファイル内の文字を確認し該当文字の個数をカウントアップ
3.結果を表示
という流れでしょうか。

具体的にどのようにファイルを読み込むのかやどのように結果を表示するかは
教えようがありません。