前回は、タイピングソフトのようなプログラムを作りました。
今回は、前回のプログラムに改良を加えてみましょう。
英単語が表示され、同じ単語を入力すると正解、間違った場合不正解となり、正解数が表示されるプログラムでした。
それをどのように作り変えるのか、プログラムの実行結果を書いておきます。
<実行結果>
次の日本語を英語に翻訳してください 林檎 apple 正解! みかん orange 正解! ブドウ budou 不正解 バナナ banana 正解! 桃 peach 正解! 5問中 4問正解でした。 続行するには何かキーを押してください・・・
日本語の文字列配列と英単語の文字列配列が必要なことが分かりますか。
日本語は問題を表示するために、英単語は正解かどうか判断するために必要です。
英単語の配列はありますので、日本語の配列をquestionとして追加しましょう。
後はノーヒントで完成まで作成してもらいましょう。
解答例です。
<sample program 099-01>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define MAX_WORD 5
#define MAX_STRING 10
#define MAX_QUESTION 5
int main(void)
{
char question[MAX_WORD][MAX_STRING] = {
"みかん",
"林檎",
"ブドウ",
"バナナ",
"桃",
};
char answer[MAX_WORD][MAX_STRING] = {
"orange",
"apple",
"grape",
"banana",
"peach",
};
int input[MAX_STRING];
int index;
int i;
int point;
srand((unsigned int)time(NULL));
point = 0;
printf("次の日本語を英語に翻訳してください\n");
for (i = 0; i < MAX_QUESTION; i++) {
index = rand() % MAX_WORD;
printf("%s\n", question[index]);
scanf("%s", input);
if (strcmp( answer[index], input) == 0) {
printf("正解!\n");
point++;
}
}
printf("%d問中 %d問正解でした。\n", MAX_QUESTION, point);
return 0;
}
|
<実行結果>
次の日本語を英語に翻訳してください 林檎 apple 正解! みかん orange 正解! ブドウ budou 不正解 バナナ banana 正解! 桃 peach 正解! 5問中 4問正解でした。 続行するには何かキーを押してください・・・
凝った改良ではありませんが、これらのプログラムをヒントに新しいプログラムにもチャレンジしてみてください。