クイズのプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ああいうあうい

クイズのプログラム

#1

投稿記事 by ああいうあうい » 3ヶ月前

クイズを作りたいと思い、ネットで検索したのですがほとんどがDXライブラリ専用のソースコードでどれがどれかさっぱりです
一回完成したプログラムを見たいです
ジャンル選択、難易度選択を行った後クイズができるプログラムを教えてください

アバター
みけCAT
記事: 6012
登録日時: 7年前
住所: 千葉県
連絡を取る:

Re: クイズのプログラム

#2

投稿記事 by みけCAT » 3ヶ月前

  • 使用するプログラミング言語、ライブラリ/フレームワーク、プラットフォーム
  • クイズの種類(4択、自由記入など)
など、もう少し仕様を絞っていただけますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ああいあいああ

Re: クイズのプログラム

#3

投稿記事 by ああいあいああ » 3ヶ月前

すみませんでした
使用言語はc++ Compiler5.5、フレームワークはEmbarcadero C/C++ Runtime Library(RTL)、stdio.h
です
クイズの形式としては
タイトル→難易度選択→ジャンル選択(4つ程度)→クイズ(四択問題)5問→結果発表(正解数のみ)
でお願いします

Math

Re: クイズのプログラム

#4

投稿記事 by Math » 3ヶ月前

>使用言語はc++ Compiler5.5、フレームワークはEmbarcadero C/C++ Runtime Library(RTL)、stdio.h
です

とはエンバカデロ・テクノロジーズ社が提供されているフリーのコンパイラBorland C++ Compiler 5.5の事でしょうか。[VersionはEmbarcadero C++ 7.30 for Win32 Copyright (c) 2012-2017 Embarcadero Technologies, Inc.]

https://www.embarcadero.com/jp/free-too ... free-tools

[BCC32コンパイラは、エンバカデロのC++Builder製品ファミリーで利用されているC++コンパイラのルーツとなるコマンドラインコンパイラです。
C++コンパイラの無料ダウンロード版には、C++11言語サポート、Dinkumware STL(Standard Template Library)フレームワーク、Embarcadero C/C++ Runtime Library(RTL)が含まれています。この無料バージョンには、ハイパフォーマンスリンカやリソースコンパイラなどのいくつかのC/C++コマンドラインツールも含まれています。]

とありますが(^^;。


かずま

Re: クイズのプログラム

#6

投稿記事 by かずま » 3ヶ月前

ああいあいああ さんが書きました: 使用言語は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;
}
参考になるのかならないのか、返事をお待ちします。

問題と解答をファイルから入力するように変更すれば、
プログラムを毎回コンパイルしなおさなくてもよくなりますね。

かずま

Re: クイズのプログラム

#7

投稿記事 by かずま » 3ヶ月前

int a[QUESTION]; は int a; で十分で、
その場合、a は a にします。

かずま

Re: クイズのプログラム

#8

投稿記事 by かずま » 3ヶ月前

const char *question[DIFFICULTY][GENRE][QUESTION] = { は、
const char *question[GENRE][DIFFICULTY][QUESTION] = { の間違いですね。
GENRE も DIFFICULTY も 2 だったので、気が付きませんでした。
適当に作ったので、他にも変なところがあるでしょう。

返信

“C言語何でも質問掲示板” へ戻る