2012
10/26
プログラム課題5
課題
キーボードから適当なアルファベット文字列を入力したとき,その文字列の中に"abc"という部分があれば文字列の先頭の左から数えて何文字目かを計算して表示せよ.ただし先頭文字は1文字目と数える."abc"の部分が複数ある場合には最初のものが何文字目かを表示するものとする.もしも"abc"がなければ0として表示する.このような先頭からの文字数を計算する次の関数を作成せよ.
int find(char str[]); //文字配列strの中から文字パターン"abc"を探してその位置(先頭からの文字数)を返す
このfindを使うとmain関数は次のようにできる.
#include <stdio.h> int find (char str[]); int main(void) { int x; char str[999]; //最大999文字まで scanf("%s", str); x = find( str); printf("%d\n",x); return 0; }
関数findの本体定義部分を自分で追加して全体としてプログラムを完成させること.
実行例
実行開始 jfdskfjhiewrujjjjkabcjfkdjfskdjfk ←キーボードから入力 19 ←19文字目からabc
aが入力された状態,次にbが入力された状態,最後にcが入力されれば成功状態となるような状態遷移のプログラムを書けばよい.a->b->cの順序どおり以外の文字が入力された場合,すべて初期状態へ遷移させ,また最初の状態で次の入力文字を調べるようにさせればよい.成功状態以外で行末まで達した段階で「失敗」となる.
提出方法
- 課題提出ページにログインし直接解答を記入すること
- 提出には,電子メール(xgate)のIDとパスワードが必要である.
- 課題提出ページは,学内からしかアクセスできない.自宅からは不可能.
- あらかじめ,自分のプログラムは別ファイルとして保存しておき,バックアップしておくこと.
- 正解でないプログラムは提出できないようになっている.
締め切り
- 原則として次回講義の前まで
- ただし,来年一月までは再提出や遅刻提出を受け付けるのであきらめないこと.(遅刻提出は減点扱い)
- 最初から完璧を目指さないでよい.様子見ぐらいの気持ちで,とりあえず一回提出してみること