Gesprächspartner Teil 2
-
Hi,
Ich möchte gerne etwas ähnliches programmieren, allerdings will ich nicht stur "Hallo" oder "Guten Abend" etc. etc. sondern Schlüsselwörter herausfiltern wie z.b.
Gegeben: "Hallo Sepp, wie geht es dir?"
Antwort: "Hallo, gut und dir?"
Er sucht mit anderen Worten nach z.b. "wie" "geht" "dir"?Ist jetzt nur ein fehlerhaft-primitives Beispiel.
Wie könnte ich sowas realisieren?
Vielen Dank für eure treue Hilfe,
Gruss johnny.xy
-
Schau dir mal die funktion strstr(,); aus der string.h an.
mit der kannst du in nem string nach dem vorkommen eines anderen strings suchen.mfg hohesC
-
Sucha auch mal bei Google nach dem Stichwort: ELIZA
-
hohesC:
Okay, vielen Dank.. ich glaube das ist "meine" Funktion. Vielen Dankdarkfalcon:
Danke aber Eliza kenne ich. Ausserdem habe ich nicht nach einem Gesprächspartner gesucht, sondern nach einer Funktion!!!johnny.xy
-
Hi,
Ich poste mal meinen Code und die Ausgabe, ihr stellt grad fest was ich euch fragen will:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define BOOL int #define TRUE 1 #define FALSE 0 #define BUFFER 255 struct Bot { char Name[255]; char Ort[64]; char Land[64]; char Eingabe[BUFFER]; int Alter; }; void Frage(char *frage) { if(strstr(strupr(frage), "HI")) { puts("Robby: Hallo Chatter!"); } else if(strstr(strupr(frage), "HI") && strstr(strupr(frage), "ROBBY")) { puts("Robby: Hallo, ja, der bin ich!"); } } int main(int argc, char *argv[]) { struct Bot Robby; struct Bot Chatter; strcpy(Robby.Name, "Robby"); Robby.Alter = 41; //printf("Ich bin %s und bin %i Jahre alt!\n", Robby.Name, Robby.Alter); puts("Robby: Hallo wie gehts? (Abbrechen mit Ctrl+C)"); while(1) { fgets(Chatter.Eingabe, BUFFER, stdin); Frage(Chatter.Eingabe); } printf("\n"); system("PAUSE"); return 0; }
Ausgabe:
Robby: Hallo wie gehts? (Abbrechen mit Ctrl+C) Hi Robby: Hallo Chatter! hi robby Robby: Hallo Chatter! shit
Danke für eure treue Hilfe,
euer johny.xy
-
Hallo,
[cpp]
void Frage(char *frage)
{
if(strstr(strupr(frage), "HI"))
// hier fragst Du nach dem "HI"
{
puts("Robby: Hallo Chatter!");
}
else if(strstr(strupr(frage), "HI") && strstr(strupr(frage), "ROBBY"))
// Wenn das "HI" nicht gefunden wird, läßt du noch mal nach "HI" suchen{
puts("Robby: Hallo, ja, der bin ich!");
}
}
[/cpp]du solltest die 'if' und die 'else if' Bedingung umdrehen
void Frage(char *frage) { if(strstr(strupr(frage), "HI") && strstr(strupr(frage), "ROBBY")) { puts("Robby: Hallo Chatter!"); } else if(strstr(strupr(frage), "HI")) { puts("Robby: Hallo, ja, der bin ich!"); } }
Wenn Du mehr Antworten einbinden willst, wird auch das Probleme machen. Du solltest dir andere Schlüsselwörter suchen oder mehr benutzen.
grüße, Con@n
-
gibts eigentlich was verständliches über einfache Gramatiken im Netz?
-
#define BOOL int
Was ist das denn?