#6
by かずま » 6年前
ああいあいああ さんが書きました:
使用言語はc++ Compiler5.5、フレームワークはEmbarcadero C/C++ Runtime Library(RTL)、stdio.h
です
クイズの形式としては
タイトル→難易度選択→ジャンル選択(4つ程度)→クイズ(四択問題)5問→結果発表(正解数のみ)
でお願いします
Embarcadero C/C++ Runtime Library(RTL)というのは、
GUI(Graphical User Interface) のライブラリじゃないようですね。
stdio.h ということは、CUI (Character User Interface) ですか?
コード:
#include <stdio.h>
#define GENRE 2
#define DIFFICULTY 2
#define QUESTION 3
const char *question[DIFFICULTY][GENRE][QUESTION] = {
{ // 算数
{ // 易しい
"2 + 3 = ? (1) 4 (2) 5 (3) 6",
"7 - 4 = ? (1) 3 (2) 11 (3) 28",
"5 x 9 = ? (1) 4 (2) 14 (3) 45",
}, { // 難しい
"1/2 + 1/3 = ? (1) 1/5 (2) 1/6 (3) 5/6",
"2/3 x 5/3 = ? (1) 7/3 (2) 10/9 (3) 2/5",
"5/9 ÷ 1/3 = ? (1) 5/3 (2) 3/5 (3) 5/23",
}
}, { // 漢字
{ // 易しい
"詳細は ? (1) ようさい (2) しょうさい (3) くわほそ",
"凡例は ? (1) ぼんれい (2) ふうれい (3) はんれい",
"忖度は ? (1) すんど (2) ひじたび (3) そんたく",
}, { // 難しい
"脆弱は ? (1) きじゃく (2) ぜいじゃく (3) もろよわ",
"忸怩は ? (1) じくじ (2) うしあま (3) こうでい",
"顰蹙は ? (1) ほせき (2) いやあし (3) ひんしゅく",
}
}
};
int answer[GENRE][DIFFICULTY][QUESTION] = {
{ // 算数
{ 2, 1, 3 }, { 3, 2, 1 } // 易しい, 難しい
}, { // 漢字
{ 2, 3, 3 }, { 2, 1, 3 } // 易しい, 難しい
}
};
int input(const char *message, int n)
{
int i;
printf("\n%s\n>> ", message);
while (1) {
if (scanf("%d", &i) != 1) return 0;
if (i >= 1 && i <= n) break;
printf("再入力>> ");
}
return i;
}
int main(void)
{
int g, d, a[QUESTION], count = 0;
puts(" ****************\n"
" * 三択問題 *\n"
" ****************");
g = input("ジャンルは? 1. 算数, 2. 漢字", GENRE);
if (g == 0) return 1;
d = input("難易度は? 1. 易しい, 2. 難しい", DIFFICULTY);
if (d == 0) return 2;
g--, d--;
printf("%d問出題されます。", QUESTION);
for (int i = 0; i < QUESTION; i++) {
printf("[%d] ", i+1);
a[i] = input(question[g][d][i], QUESTION);
if (a[i] == 0) return 3;
if (a[i] == answer[g][d][i]) {
puts("正解");
count++;
}
else
printf("残念。正解は %d です\n", answer[g][d][i]);
}
printf("\n正解数は %d です\n", count);
return 0;
}
参考になるのかならないのか、返事をお待ちします。
問題と解答をファイルから入力するように変更すれば、
プログラムを毎回コンパイルしなおさなくてもよくなりますね。
[quote="ああいあいああ" id=3,19974,149838]
使用言語はc++ Compiler5.5、フレームワークはEmbarcadero C/C++ Runtime Library(RTL)、stdio.h
です
クイズの形式としては
タイトル→難易度選択→ジャンル選択(4つ程度)→クイズ(四択問題)5問→結果発表(正解数のみ)
でお願いします[/quote]
Embarcadero C/C++ Runtime Library(RTL)というのは、
GUI(Graphical User Interface) のライブラリじゃないようですね。
stdio.h ということは、CUI (Character User Interface) ですか?
[code=c]
#include <stdio.h>
#define GENRE 2
#define DIFFICULTY 2
#define QUESTION 3
const char *question[DIFFICULTY][GENRE][QUESTION] = {
{ // 算数
{ // 易しい
"2 + 3 = ? (1) 4 (2) 5 (3) 6",
"7 - 4 = ? (1) 3 (2) 11 (3) 28",
"5 x 9 = ? (1) 4 (2) 14 (3) 45",
}, { // 難しい
"1/2 + 1/3 = ? (1) 1/5 (2) 1/6 (3) 5/6",
"2/3 x 5/3 = ? (1) 7/3 (2) 10/9 (3) 2/5",
"5/9 ÷ 1/3 = ? (1) 5/3 (2) 3/5 (3) 5/23",
}
}, { // 漢字
{ // 易しい
"詳細は ? (1) ようさい (2) しょうさい (3) くわほそ",
"凡例は ? (1) ぼんれい (2) ふうれい (3) はんれい",
"忖度は ? (1) すんど (2) ひじたび (3) そんたく",
}, { // 難しい
"脆弱は ? (1) きじゃく (2) ぜいじゃく (3) もろよわ",
"忸怩は ? (1) じくじ (2) うしあま (3) こうでい",
"顰蹙は ? (1) ほせき (2) いやあし (3) ひんしゅく",
}
}
};
int answer[GENRE][DIFFICULTY][QUESTION] = {
{ // 算数
{ 2, 1, 3 }, { 3, 2, 1 } // 易しい, 難しい
}, { // 漢字
{ 2, 3, 3 }, { 2, 1, 3 } // 易しい, 難しい
}
};
int input(const char *message, int n)
{
int i;
printf("\n%s\n>> ", message);
while (1) {
if (scanf("%d", &i) != 1) return 0;
if (i >= 1 && i <= n) break;
printf("再入力>> ");
}
return i;
}
int main(void)
{
int g, d, a[QUESTION], count = 0;
puts(" ****************\n"
" * 三択問題 *\n"
" ****************");
g = input("ジャンルは? 1. 算数, 2. 漢字", GENRE);
if (g == 0) return 1;
d = input("難易度は? 1. 易しい, 2. 難しい", DIFFICULTY);
if (d == 0) return 2;
g--, d--;
printf("%d問出題されます。", QUESTION);
for (int i = 0; i < QUESTION; i++) {
printf("[%d] ", i+1);
a[i] = input(question[g][d][i], QUESTION);
if (a[i] == 0) return 3;
if (a[i] == answer[g][d][i]) {
puts("正解");
count++;
}
else
printf("残念。正解は %d です\n", answer[g][d][i]);
}
printf("\n正解数は %d です\n", count);
return 0;
}
[/code]
参考になるのかならないのか、返事をお待ちします。
問題と解答をファイルから入力するように変更すれば、
プログラムを毎回コンパイルしなおさなくてもよくなりますね。