Announcement

Collapse
No announcement yet.

Vergleich funktioniert nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Vergleich funktioniert nicht

    Hallo Habe ein kleines Problem und werde der Sache nicht her.
    Hab 2 Strings eingelesen und hab sie anhand ihrer Satzstellung identisch gemacht. Aus Hallowiegehts wird Hallo wie gehts.
    Jetzt will ich wie im anderen Thema schon diskutiert die einzelnen Wörter vergleichen aber es funktioniert nicht er vergleicht hallo mit wie und wie mit wie
    Kann mir jemand helfen?
    hab auch ein bischen Code für eich der Rote bereich ist denke ich der Wo der Fehler liegt!
    Code:
    //Versuch Satzstellung zu finden//
    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.Linq;
    using System.Text;
    using System.Text.RegularExpressions;
    
    namespace Testapp
    {
    
        static class MinEditDistanz                                     //Levenshtein Algorithmus zu Bestimmung der MIN-Edit-Distanz
        {
            public static int Compute(string s, string t)
            {
                int n = s.Length;
                int m = t.Length;
                int[,] d = new int[n + 1, m + 1];
    
                if (n == 0)
                {
                    return m;
                }
    
                if (m == 0)
                {
                    return n;
                }
    
    
                for (int i = 0; i <= n; d[i, 0] = i++)
                {
                }
    
                for (int j = 0; j <= m; d[0, j] = j++)
                {
                }
    
    
                for (int i = 1; i <= n; i++)
                {
    
                    for (int j = 1; j <= m; j++)
                    {
    
                        int cost = (t[j - 1] == s[i - 1]) ? 0 : 1;
    
                        d[i, j] = Math.Min(
                            Math.Min(d[i - 1, j] + 1, d[i, j - 1] + 1),
                            d[i - 1, j - 1] + cost);
                    }
                }
    
                return d[n, m];
            }
        }                                                                       //***
    
    
    
    
        class Program
        {
            static void Main()
            {
                Console.ForegroundColor = ConsoleColor.White;       //Textfarbe ändern
    
                int abr = 0;                                        //Variable für Schleifenabbruch
                string Leer= " ";
                char[] leer=Leer.ToCharArray();
    
                while (abr < 10)
                {
                    int F = 0;                                          //Fehlerzähler
    
                    string x = Console.ReadLine();                  //Einlesen 1.String
                    string y = Console.ReadLine();                  //Einlesen 2.String (eingebener String)
    
                  
    
                    string X = Regex.Replace(x, "(\\s+)", " ");      //Doppelte Leerzeichen entfernen
                    string Y = Regex.Replace(y, "(\\s+)", " ");     //-->wird später nur beim eingegebenen String benötigt
    
                    string[] sX = X.Split(' ');                    //Stringsplit
                    
                    ArrayList sXList = new ArrayList();             //Strings in Arraylist speichern
                    foreach (string s in sX)
                        sXList.Add(s);
    
                    int sXCount = sXList.Count;                     //Variable für Arraylistlänge
                    
    
                    for (int iX = 0; iX <= sXCount-1; iX++)               //Schleife Für jedes Arraylistelememt sXList
                    {
                        string s = sXList[iX].ToString();                   //Object aus Arraylist in String konvertieren
                                        
                        int istringX = X.IndexOf(s);                    //Position des Musters aus Arraylist im 1.String
                        int istringY = Y.IndexOf(s);                    //Position des Musters aus Arraylist im 1.String
                        
                        
             //Hier müssen Unterscheidungen getroffen werden!!!!            
                        if (istringY > -1)                              //Wenn Muster gefunden(postition größer -1)
                        {
                            if ((istringY < istringX)|(istringY>istringX))   /*Wenn Position Muster2 ist kleiner Muster1
                                                                                Oder Pos. Muster2 größer Pos. Muster1*/
                            {                                                   
                                
                                Y = Y.Insert(istringY, " ");            //Füge Leerzeichen an Position von Muster 2 ein
                                Y = Y.TrimStart(leer);
                                Y = Y.TrimEnd(leer);
                                Y = Regex.Replace(Y, "(\\s+)", " ");      //Doppelte Leerzeichen entfernen
                                                            
                                string[] sY = Y.Split(' ');                    //Stringsplit
    
                                ArrayList sYList = new ArrayList();     //Verbesserter String in Arraylist einfügen
                                foreach (string t in sY)
                                    sYList.Add(t);
                                
                                int sYCount = sYList.Count;                     //Variable für Arraylistlänge
    
                                for (int iY = 0; iY <= sYCount - 1; iY++)
                                {
                                    string t = sYList[iY].ToString();
                                    Console.Write(t);
                                    Console.Write(s);
                                }
    
                             }
                           
                        }
    
    
                      
                            
                     }
                         Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine(Y);
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine("Insgesamt:{0} Fehler!", F);
    
                    abr++;
                }
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine("Zum Abbrechen Enter Drücken!");              //Abbruch
                Console.ReadLine();
            }                             
    
         }
    }
Working...
X