/* 英単語を出題し、それと同じ文字列を入力させ、同じかどうか判定するタイピングゲームを作
成せよ。数問の出題の後、単語単位でのミスタイプ率を表示するようにせよ。また、ミスタイプ
をした場合、単語の先頭から1 文字ずつ比べて初めてミスタイプした文字をミスタイプ文字とし
て記録し、一番多くミスタイプした文字を表示するようにせよ。 */
#include<stdio.h>
#include<string.h>
char word[5][11] = {"library","follow","enter","common","practice"}; /* 出題される単語 */
char inp[11]; /* 入力 */
int miss[100]; /* ミスしたスペルを格納*/
int main(void){
int weak=-999;
int i,j;
int good = 0; /* 正解 */
int bad = 0; /* 不正解 */
float rate = 0.0; /* 単語単位の正解率 */
printf("今から出題される英単語をタイプしてください。\n");
for(i=0;i<5;i++){
printf("問%d.「%s」:",i+1,word[i]);
scanf("%s",inp); /* タイピングしたものをinpに配列 */
if(strcmp(inp,word[i])==0){ /* 正解と一致 */
good++; /* 正解を加算 */
}else{
bad ++; /* 不正解を加算 */
for(j=0;word[i][j] != inp[j+1];j++){ /* 1文字ずつ比較し、初めのミスまでループ */
if(inp[j] != word[i][j]){ /* ミスタイプしたら */
printf("%c\n",word[i][j]);
miss[word[i][j]]++; /* その文字をカウントしていく*/
}
}
}
}
for(i=0;i<100;i++){
if(miss[i]>weak){ /* 間違えた回数が一番多かったキーを求める*/
weak = miss[i];
}
}
rate += 100*(float)bad/((float)good + (float)bad); /* 単語単位正誤率 */
printf("good 「%d問」 bad 「%d問」 weak key「%cキー」 単語単位の正誤率 「%.2f%」 \n",good,bad,weak,rate);
return 0;
}