トップへ
田村研究室

プログラミング技法とデータ構造

Computer Programming and Data Structures

2011
10/6

プログラム課題1

課題

キーボードから適当なアルファベット文字列を入力したとき,その文字列の中に"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の順序どおり以外の文字が入力された場合,すべて初期状態へ遷移させ,また最初の状態で次の入力文字を調べるようにさせればよい.成功状態以外で行末まで達した段階で「失敗」となる.

提出方法

  • ワープロ作成でA4紙に印刷して提出
  • 目次は 課題の説明,作成した画像処理の内容(理論),プログラムソース,入力画像と出力画像(結果),プログラムの説明と考察

締め切り

  • 原則として来週の講義まで
  • ただし,7月末までは遅刻提出を受け付けるのであきらめないこと.