vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Vokale & Umlaute...Permutation? 
Autor: Preisser
Datum: 21.10.10 18:46

Hallo,
nun, dafür könnte man beispielsweise ein Array aus Char-Arrays erstellen, das für jeden Buchstaben im Wort die möglichen Variationen für diesen auflistet. Dann muss man nur das immer so durchlaufen und daraus die neuen Wörter bilden.

Allerdings ist auf diese Weise das ganze in VB6 ein bisschen schwieriger zu implementieren als in Sprachen wie C# und Java, da man unter VB6 keine Chars hat, sondern nur Strings, und meines Wissens auch keine Arrays aus Arrays erstellen kann (damit sind keine mehrdimensionalen Arrays gemeint). Wenn man das ganze also mit mehrdimensionalen Arrays machen würde, bräuchte man ein nxm-Array, wobei n die Länge des Wortes ist und m die maximale Anzahl an Variationen für ein bestimmtes Zeichen.

In C# könnte das ganze folgendermaßen aussehen (hab mich leider mit der VB.Net-Syntax noch nicht so befasst, und in VB6 ist es auf diese Weise wie gesagt ein wenig aufwändig zu programmieren, es sollte aber dennoch möglich sein).

public static string[] getPermutationen(string eingabe) {
	//' Wort kleinschreiben, um Zeichen zu finden
	string eingabeNormal = eingabe.ToLower(); 
	bool[] konvGross = new bool[eingabe.Length];
	//' die Zeichen, bei denen Vertauschungen möglich sind
	string[] varZeichen = {"aäáàâ", "eéèê", "iíìî", "oöóòô", "uüúùû"}; 
	string[] perms; //' Rückgabewert
	char[][] charPerms = new char[eingabe.Length][];
	int[] charPermsZaehler = new int[charPerms.Length];
	int anzahlPermutationen = 1; //' die Anzahl an Permutationen (insgesamt)
 
	//' Schauen, für welche Zeichen es verschiedene Varianten gibt
	for (int k = 0; k < eingabe.Length; k++) {
		konvGross[k] = char.ToUpper(eingabe[k]) == eingabe[k];
		for (int j = 0; j < varZeichen.Length; j++) {
			if (varZeichen[j].IndexOf(eingabeNormal[k]) >= 0) {
				//' variables Zeichen
				charPerms[k] = varZeichen[j].ToCharArray();
			}
		}
		if (charPerms[k] == null) //' einfaches Zeichen
			charPerms[k] = new char[] {eingabe[k]};
		anzahlPermutationen *= charPerms[k].Length;
	}
 
	perms = new string[anzahlPermutationen];
	char[] neuesWort = new char[eingabe.Length];
 
	for (int k = 0; k < anzahlPermutationen; k++) {
		for (int z = 0; z < neuesWort.Length; z++) {
			neuesWort[z] = charPerms[z][charPermsZaehler[z]];
			if (konvGross[z])
				neuesWort[z] = char.ToUpper(neuesWort[z]);
		}
		perms[k] = new string(neuesWort);
 
		charPermsZaehler[charPermsZaehler.Length - 1]++; //' Zähler erhöhen
		for (int j = charPermsZaehler.Length - 1; j > 0; j--) {
			if (charPermsZaehler[j] == charPerms[j].Length) {
				charPermsZaehler[j] = 0;
				charPermsZaehler[j - 1]++;
			}
		}
	}
 
	return perms;
}
Die Strings in dem varZeichen-Array geben dabei an, bei welchen Zeichen solche Vertauschungen möglich sind. Es wird z.B. auch bei Eingabe von "ä" ein Array mit "a", "ä", "á" usw. geliefert. Großbuchstaben werden auch berücksichtigt.

Beitrag wurde zuletzt am 21.10.10 um 19:15:37 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Vokale & Umlaute...Permutation?3.390CyberDreams21.10.10 16:37
Re: Vokale & Umlaute...Permutation?2.638Preisser21.10.10 18:46
Re: Vokale & Umlaute...Permutation?2.353CyberDreams22.10.10 08:32
Re: Vokale & Umlaute...Permutation?2.475CyberDreams22.10.10 13:50
Re: Vokale & Umlaute...Permutation?2.388ModeratorMartoeng22.10.10 15:33
Re: Vokale & Umlaute...Permutation?2.391CyberDreams22.10.10 15:41
Re: Vokale & Umlaute...Permutation?2.477ModeratorMartoeng22.10.10 16:03
Re: Vokale & Umlaute...Permutation?2.437gunthard26.10.10 09:12
Re: Vokale & Umlaute...Permutation?2.379ModeratorMartoeng26.10.10 10:26

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel