Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 00:35

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C# aus Textdatei lesen

Discussion on C# aus Textdatei lesen within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
xNRgiZeDx™'s Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
C# aus Textdatei lesen

Hallo,

Ich möchte das für jeden Buchstaben der eingegeben wird, der zugeordnete Buchstabe Ausgegeben wird. Wie kann ich das mit einer Textdatei realisieren?

Quote:
|INPUT | a b c d e f g h i j k l m n o p q r s t u v w x y z
|OUTPUT| j k h i n o l m r s p q v w t u z G b c J a f g d e
z.B mit dieser Tabelle, für ein eingegebenes "a" soll ein "j" ausgegeben werden.

Hoffe jemand kann mir behilflich sein.
xNRgiZeDx™ is offline  
Old 10/27/2013, 21:31   #2
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Dafür eignet sich eine Map sehr gut. Solch eine Datenstruktur lässt sich bestimmt auch unter .NET finden.
Schlüsselbein is offline  
Old 10/27/2013, 21:36   #3
 
xNRgiZeDx™'s Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
Meinst du sowas hier ?
xNRgiZeDx™ is offline  
Old 10/27/2013, 21:47   #4
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Genau, Dictionary wäre ein passender Container.

Allerdings mal ne Frage nebenbei: Gehts um die Caesar-Verschlüsselung?
Schlüsselbein is offline  
Old 10/27/2013, 21:58   #5
 
xNRgiZeDx™'s Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
Nein, es geht um eine Übersetzung von zwei Fraktionssprachen in einem Spiel. Verstehe nur nicht, wie ich das auf meine Tabelle anwenden soll.
xNRgiZeDx™ is offline  
Old 10/28/2013, 00:38   #6



 
Shawak's Avatar
 
elite*gold: 0
The Black Market: 259/0/0
Join Date: Apr 2010
Posts: 10,291
Received Thanks: 3,611
Code:
        public static string Translate(string text)
        {
            var from = "abcdefghijklmnopqrstuvwxyz";
            var to =   "jkhinolmrspqvwtuzGbcJafgde";
            var ret = new StringBuilder();
            foreach (var l in text)
            {
                int index;
                for (index = 0; index <= from.Length; index++)
                    if (index == from.Length || from[index] == l)
                        break;
                ret.Append(index != from.Length ? to[index] : l);
            }
            return ret.ToString();
        }
Shawak is offline  
Thanks
1 User
Old 10/28/2013, 00:41   #7
 
xNRgiZeDx™'s Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
Danke dir, die Methodik war mir noch nicht bekannt.
xNRgiZeDx™ is offline  
Old 10/28/2013, 01:03   #8

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
Quote:
Originally Posted by Shawak View Post
[zur Übersichtlichkeit lasse ich den Code weg]
Das ergibt ne Laufzeit von len(text) * len(from), eine Map, wie von Schlüsselbein vorgeschlagen, dürfte mit len(text) * log2(len(from)) bei längeren Texten wesentlich effektiver sein.

auf die Schnelle umgesetzt:
Code:
public static string Translate(string text)
{
	var fromTo = new Dictionary<char, char>()
	{
		{'a', 'j'},
		{'b', 'k'},
		{'c', 'l'},
		//usw...
	};
	
	var ret = new StringBuilder();
	
	foreach (char l in text)
	{
		if (fromTo.ContainsKey(l))
		{
			ret.Append(fromTo[l]);
		}
	}
	
	return ret.ToString();
}
Das Dictionary kann man sicher auch noch komfortabel serialisieren, dann kann man das auch in einer Textdatei bearbeiten.
snow is offline  
Thanks
2 Users
Old 10/28/2013, 01:34   #9
 
xNRgiZeDx™'s Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
Es muss nicht zwinged eine Textdatei sein. Habe das Programm jetzt soweit das es tut was es soll, muss nurnoch überprüfen, ob es auch richtig übersetzt.
xNRgiZeDx™ is offline  
Old 10/28/2013, 01:43   #10



 
Shawak's Avatar
 
elite*gold: 0
The Black Market: 259/0/0
Join Date: Apr 2010
Posts: 10,291
Received Thanks: 3,611
Ich war mal so frei:

Code:
        public static string Translate(string text, bool includeUntranslateable = true)
        {
            var fromTo = new Dictionary<char, char>()
            {
                {'a', 'j'},
                {'b', 'k'},
                {'c', 'h'},
                {'d', 'i'},
                {'e', 'n'},
                {'f', 'o'},
                {'g', 'l'},
                {'h', 'm'},
                {'i', 'r'},
                {'j', 's'},
                {'k', 'p'},
                {'l', 'q'},
                {'m', 'v'},
                {'n', 'w'},
                {'o', 't'},
                {'p', 'u'},
                {'q', 'z'},
                {'r', 'G'},
                {'s', 'b'},
                {'t', 'c'},
                {'u', 'J'},
                {'v', 'a'},
                {'w', 'f'},
                {'x', 'g'},
                {'y', 'd'},
                {'z', 'e'},
            };
            var ret = new StringBuilder();
            foreach (var l in text)
                if (fromTo.ContainsKey(l))
                    ret.Append(fromTo[l]);
                else if (includeUntranslateable)
                    ret.Append(l);
            return ret.ToString();
        }
    }
Shawak is offline  
Thanks
1 User
Old 10/28/2013, 01:51   #11
 
xNRgiZeDx™'s Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
Danke dir, ich darf davon morgen 4 Stück machen, da jenachdem welcher Buchstabe kommt, ich in eine andere Tabelle Springen muss in der Wieder andere Buchstaben zugeordnet werden. Hat jemand einen Tipp wie ich das möglichst einfach realisieren kann? Sonst müsste man ja if abfragen machen und dann in die nâchste. tabelle verweisen.
xNRgiZeDx™ is offline  
Old 10/28/2013, 02:02   #12



 
Shawak's Avatar
 
elite*gold: 0
The Black Market: 259/0/0
Join Date: Apr 2010
Posts: 10,291
Received Thanks: 3,611
Code:
        static void Main(string[] args)
        {
            var dict1 = DictionaryFromStrings(
                "abcdefghijklmnopqrstuvwxyz",
                "jkhinolmrspqvwtuzGbcJafgde"
            );

            var dict2 = DictionaryFromStrings(
                "abcdefg",
                "1234567"
            );

            var input = Console.ReadLine();
            Console.WriteLine("Dict1: " + Translate(dict1, input));
            Console.WriteLine("Dict2: " + Translate(dict2, input));

            Console.ReadKey();
        }

        public static Dictionary<char, char> DictionaryFromStrings(string from, string to)
        {
            var ret = new Dictionary<char, char>();
            for (int i = 0; i < from.Length; i++)
                ret.Add(from[i], to[i]);
            return ret;
        }

        public static string Translate(Dictionary<char, char> dictionary, string text, bool includeUntranslateable = true)
        {
            var ret = new StringBuilder();
            foreach (var l in text)
                if (dictionary.ContainsKey(l))
                    ret.Append(dictionary[l]);
                else if (includeUntranslateable)
                    ret.Append(l);
            return ret.ToString();
        }
Shawak is offline  
Thanks
1 User
Old 10/28/2013, 18:05   #13


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
snow, du hast da nicht 100%ig Recht. len(text)*len(from) wäre der Worst-Case. Im Durchschnitt könnte man also (wenn man jetzt mal von Häufigkeitsverteilungen von bestimmten Buchstaben in einer Sprache absieht) von len(text)*len(from)*1/2 ausgehen.
Ob ein Dictionary nur im Avarage-Case die Laufzeit log2(n) hat oder auch Worst-Case, weiß ich gerade nicht.
MrSm!th is offline  
Old 10/28/2013, 18:53   #14

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
Quote:
Originally Posted by MrSm!th View Post
snow, du hast da nicht 100%ig Recht. len(text)*len(from) wäre der Worst-Case. Im Durchschnitt könnte man also (wenn man jetzt mal von Häufigkeitsverteilungen von bestimmten Buchstaben in einer Sprache absieht) von len(text)*len(from)*1/2 ausgehen.
Ob ein Dictionary nur im Avarage-Case die Laufzeit log2(n) hat oder auch Worst-Case, weiß ich gerade nicht.
Gut, dann nehmen wir die Groß-O-Darstellung, dann habe ich Recht.
Klar ist das Worst-Case, O(len(text)*len(from)) entspricht dann aber auch O(len(text)*len(from)*1/2). Passt schon irgendwie

Ich weiß nicht, wie .NET das Dictionary intern aufbaut, sollten sie einen Binary-Tree verwenden, dürfte O(log2(n)) soweit passen. Sollten sie ne Hashtable verwenden.. nunja, Hashtables sind böse.

Letztendlich wird das ja auch egal sein, ich denke nicht, dass man das während der Ausführung wirklich merkt. Dictionaries sind allerdings cooler als diese doofen for-Schleifen.
snow is offline  
Old 10/28/2013, 21:37   #15
 
xNRgiZeDx™'s Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
So ich hab mal ein bischen rumgebastelt, jedoch komm ich auf keine Lösung dafür, wie ich zwischen den Tabellen springen kann.
Quote:
Initial letter:

If you want to say: a b c d e f g h i j k l m n o p q r s t u v w x y z

Type..............: i h k j m l o n q p s r u t w v y x a z c b e d g f

Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 1 1 1 1

OR type...........: O N Q P S R U T W V Y X A Z C B E D G F I H K J M L

Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 3 1 3 3 3 3 3 3 3 3 3 3 3 3


Table 1

If you want to say: a b c d e f g h i j k l m n o p q r s t u v w x y z

Type..............: e d g f i h k j m l o n q p s r u t w v y x a z c b

Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1

OR type...........: K J M L O N Q P S R U T W V Y X A Z C B E D G F I H

Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 3 3 3 3 3 3 3 3


Table 2

If you want to say: a b c d e f g h i j k l m n o p q r s t u v w x y z

Type..............: d c f e h g j i l k n m p o r q t s v u x w z y b a

Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1

OR type...........: J I L K N M P O R Q T S V U X W Z Y B A D C F E H G

Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3


Table 3

Type..............: f e h g j i l k n m p o r q t s v u x w z y b a d c

Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1

OR type...........: L K N M P O R Q T S V U X W Z Y B A D C F E H G J I

Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3
Ich muss jenachdem welcher Buchstabe eingegeben wird, in der nächsten Tabelle weitermachen nur weiss ich nicht wie ich Prüfen kann welcher Buchstabe dazugehört, klar if-abfragen aber da tipp ich mir ja nen wolf.
xNRgiZeDx™ is offline  
Reply


Similar Threads Similar Threads
[Buying] Textdatei aus survey DL
08/24/2013 - Trading - 1 Replies
Hab hier nen Link mit einer Textdatei, wo ich leider nicht rankomme . Zahle 5 egold für den Inhalt dieses Dokumentes. Hier der Link: CleanFiles Download File: Password-bf3.txt Schickt mir dann einfach einen Traderequest oder nen Treasurelink.
[S]Textdatei [B] e*G
03/19/2013 - elite*gold Trading - 0 Replies
Und zwar handelt es sich hier um ein Deckblatt für ein Portfolio. Habe die PSD, hintergrund ist festgelegt. Da muss nur der Satz "Meine Gesundheit und eine meiner Infektionskrankheiten, die ich hatte" rein. Einen einfachen text kann ich auch machen, er sollte natührlich professionell aussehen, Schatten und alle anderen Spielereien sind erwünscht. Außerdem soll er zum Hintergrund passen und nicht alles überdecken Meldet euch in Skype für mehr info's
Name aus Textdatei lesen
03/12/2012 - AutoIt - 6 Replies
Hey, ich suche den Script oder den Befehl damit autoit aus einer offen Text datei sich aus einer bestimmt zeile den namen nimmt und woanders eintippt. Da es glaub ich so schwer zu verstehen ist hier mal ein kurzes video zu meinem Problem: (habe versucht etwas zu finden nur weiß ich ja nicht einmal genau wie man so etwas nennt.. deswegen frag ich mal eben schnell nach, seit mir nicht böse (; ) http://www.youtube.com/watch?v=9_kkdqgNhm4 €.: Mir ist grad eingefallen das bei meinem...



All times are GMT +2. The time now is 00:35.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.