第86章 CGIプログラミング その7


今回は、前章の改良版です。



最初の表示は前章と全く同じです。



「占う」ボタンを押すと・・・

グラフィックス付きでおみくじの結果が出ます。また、前章では それぞれの結果(大吉、吉、小吉、凶、大凶)の出る確率は同程度でした。 今回は、「大吉」「大凶」の出る確率を約1/20、「凶」「吉」の出る確率を1/10、 残りを「小吉」というように重みを付けてみました。



では、呼び出し側のHTMLを見てみましょう(index.html)。

<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>おみくじ</TITLE>
</HEAD>
<BODY>
<CENTER>
下のボタンを押すと本日の運勢を占うことができます
<FORM METHOD="GET" ACTION="kuji02.cgi">
<INPUT TYPE="SUBMIT" VALUE="占う">
</FORM>
</CENTER>
</BODY>
</HTML>
CGIの名前がkuji02.cgiになったので、ここだけが前章と異なります。

次にくじの結果を表す適当な画像を用意しておきます。

画像ファイル名
daikichi.gif
kichi.gif
shoukichi.gif
kyo.gif
daikyo.gif

では、プログラムを見てみましょう。

// kuji02.c

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
    char kuji[5][8] = {"大吉", "吉", "小吉", "凶", "大凶"};
    char gif[5][32] = {"daikichi.gif", "kichi.gif", "shoukichi.gif", "kyo.gif", "daikyo.gif"};
    int ku, no;

    srand((unsigned int)time(NULL));

    printf("Content-Type:text/html\n\n");
    printf("<HTML>\n<HEAD>\n<TITLE>おみくじ</TITLE>\n</HEAD>\n<BODY>");

    no = rand() % 100;
    if (no < 5) 
        ku = 0;
    else if (no >= 5 && no < 15)
        ku = 1;
    else if (no >= 15 && no < 85)
        ku = 2;
    else if (no >= 85 && no < 95)
        ku = 3;
    else
        ku = 4;

    printf("<CENTER>\n");
    printf("<FONT SIZE=\"5\">");
    printf("<IMG SRC=\"%s\"><P>", gif[ku]);
    printf("あなたの運勢は%sです", kuji[ku]);
    printf("</FONT>\n");
    printf("<P><A HREF=\"index.html\">Back</A></P>");
    printf("</CENTER>\n");
    printf("</BODY>\n<HTML>\n");

    return 0;
}
no = rand() % 100;

でnoには0から99までのいずれかの整数が代入されます。

これが5以下となる確率は1/20です。

同様に5以上15未満となる確率は1/10です。

このように、出る確率に重みを付けておきます。

従ってkuが0となる確率は1/20, 1となる確率は1/10, 2となる確率は7/10, 3となる確率は1/10, 4となる確率は1/20になります。

kuが0となれば、「大吉」で表示される画像は daikichi.gifとなります。

今回も簡単でした。


[Index][総合Index] [Previous Chapter] [Next Chapter]

Update Jan/19/2003 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。