英語入力するプログラム
月名の日本語を入力して英語にするプログラムを書こうとしている
のですが、うまく動作しません。
たとえば。
「3月:」と表示されたら大文字か小文字、もしくは組み合わせで
marchと入力すれば「正解です。」と表示されるようにです。
具体的には、ランダムで月名が表示されていくのですが何を入力しても
正解と表示されてしまいます。
たとえば、marchなのにdなどと入力しても正解になってしまいます。
何がおかしいのでしょうか?
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#define swap(type,x,y) do{type t=x;x=y;y=t;}while(0)
char *tukistr[]={"January","Feburary","March","April","May","June","July",
"August","September","October","November","December"};
int main(void)
{
char nstr[12]={0,1,2,3,4,5,6,7,8,9,10,11};
char tuki[10];
int num;
int seikai=0;
int k=0;
int seiho[12];
int huseiho[12];
int m=0;
int i,j;
srand(time(NULL));
printf("月名の英語を入力してください。入力は大文字でも小文字でも構いません。\n");
for(i=11;i>0;i--)
{
j=rand()%i;
swap(int,nstr[j],nstr[i]);
}
for(i=0;i<12;i++)
{
printf("%d月 : ",nstr[i]+1);
scanf("%s",tuki);
do{
for(j=0;j<strlen(tuki);j++)
{
if(isalpha(tuki[j])!=isalpha(tukistr[nstr[i]][j]))
{
printf("違います。正解を見ますか? 0-いいえ/1-はい:");
scanf("%d",&num);
if(num==1)
{
huseiho[m++]=nstr[i];
}
break;
}
}
}while(num==0 && j<strlen(tuki));
if(j==strlen(tuki))
{
printf("正解です。\n");
seikai++;
seiho[k++]=i;
}
else if(num==1)
{
printf("%d月は%sです。\n",nstr[i],tukistr[i]);
}
}
printf("12個のうち%d個が正解でした。\n",seikai);
printf("正解した月:");
for(j=0;j<12;j++)
{
if(j==seiho[j])
{
printf("%d月,",j+1);
}
}
printf("\n\n");
printf("間違えた月:");
for(j=0;j<12;j++)
{
if(j==huseiho[j])
{
printf("%d月,",j+1);
}
}
return 0;
}
お礼
有難うございます。 おかげさまで参考になりました。