寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C #ITP1_9_A Finding a Word

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。

・問題
 1つの単語 W と文章 T が与えられます。T の中にある W の数を出力するプログラムを作成して下さい。
 文章 T に含まれるスペースまたは改行で区切られた文字列を単語 Ti とします。
 すべての Ti において単語 W と同じになるものを数えて下さい。
 なお、大文字と小文字は区別しません。

・入力される値
 1行目に単語 W が与えられます。
 続いて、複数の行にまたがった文章与えられます。
 END_OF_TEXT という文字列が文章の終わりを示します。

・期待する出力
 単語 W の数を出力して下さい。

・条件
 Wの文字列の長さは10を超えない
 Wに含まれる文字はすべてアルファベット小文字である
 Tの1行あたりの文字列の長さは1000を超えない

僕が作成、提出したコードは、以下のとおりです。

/*
 ITP1_9_A Finding a Word
 http://judge.u-aizu.ac.jp/
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(void){
    int i;
    int sum = 0;
    char W[11],T[1001];
    scanf("%s",W);
    for(i=0;W[i];++i){
        W[i]=tolower(W[i]);
    }
    while(1){
        scanf("%s",T);
        if(strcmp("END_OF_TEXT", T)==0){
            break;
        }
        for(i=0;T[i];++i){
            T[i] = tolower(T[i]);
        }
        if(strcmp(W,T)==0){
            ++sum;
        }
    }
    printf("%d\n",sum);
    return 0;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
ITP1_9_A Finding a Word