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 Dank

    darkfalcon:
    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?


Anmelden zum Antworten