こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

このプログラムは「こんにちは」と打つと「こんにちは、元気ですか」と返答

このプログラムは「こんにちは」と打つと「こんにちは、元気ですか」と返答するプログラムです
このプログラムを改良して「こんにちは」と打つと「こんにちは、元気ですか」と言うようなキーワードを打つ決められた回答をするようなものを増やしていきたいのですが、どのように改良すればよいでしょうか?
例えば 「寒いですね」といれると「冬だからね」となるように

#include <stdio.h>
#include <string.h>

int reply(const char *s)
{
const char *reply_s[] = {"こんにちは 元気ですか?", "バイバイ", "ふ~ん?"};

if(strstr(s, "こんにちは")) puts(reply_s[0]);
else if(strstr(s, "さようなら")){
puts(reply_s[1]);
return 0;
}
else puts(reply_s[2]);
return 1;
}

int main(void)
{
char s[128];

do{
char *p;

fgets(s, sizeof s, stdin);
if(p = strchr(s, '\n')) *p = '\0';
}while(reply(s));
return 0;
}

投稿日時 - 2010-01-07 07:01:23

QNo.5573926

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

「人工無能」とか「人工痴能」とかでネット検索すると、質問にあるような「学習型簡易自動応答プログラム」についての情報やソースコードを見付ける事が出来ます。

投稿日時 - 2010-01-07 15:39:49

ANo.1

私だったら、こんな風にします。

1)質問の文字列とそれに対応する答えの文字列を
  メンバーとする構造体を定義する。

2)上記構造体の配列を定義する。
  例:
  配列[0]:{ "こんにちは", "こんにちは 元気ですか?" }
  配列[1]:{ "寒いですね", "冬だからね" }
  配列[2]:{ "バイバイ", "さようなら" }

3)プログラム本体では、入力した文字列をキーとして
  上記構造体配列の質問部分を検索する。

4)検索にヒットすれば、その質問に対応する答えの部分を
  出力する。

投稿日時 - 2010-01-07 07:52:29