C# :: Aufgabe #137 :: Lösung #3

6 Lösungen Lösungen öffentlich
#137

Pig Latin - Schweine Latein

Anfänger - C# von DrizZle - 15.06.2016 um 13:57 Uhr
Hier zum Wikipedia Post

Einführung:

Zitat:

Pig Latin (engl.; wörtlich: Schweine-Latein) bezeichnet eine Spielsprache, die im englischen Sprachraum verwendet wird.
Sie wird vor allem von Kindern benutzt, aus Spaß am Spiel mit der Sprache oder als einfache Geheimsprache, mit der Informationen vor Erwachsenen oder anderen Kindern verborgen werden sollen.


Erklärung:

Zitat:

Beginnt das Wort mit einem Konsonanten, so wird der initiale Konsonant oder Konsonantencluster ans Ende des Wortes verschoben und ein „ay“ angehängt. Zu betrachten ist hierbei nicht die Rechtschreibung, sondern die tatsächliche Aussprache: „Stumme“ Konsonantenbuchstaben, wie z. B. das „h“ in „honor“, sind keine Konsonanten.

loser → oser-lay
button → utton-bay
star → ar-stay
three → ee-thray
question → estion-quay
happy → appy-hay
Pig Latin → Ig-pay Atin-lay

Beginnt das Wort mit einem Vokal oder einem stummen Konsonanten, so wird direkt ein „ay“ angehängt.

eagle → eagle-ay
America → America-ay
honor → honor-ay


Aufgabe:
Schreibt ein Programm welches ein belibiges Wort ins Schweine Latein umwandelt und ausgibt. Auf die Regel mit Stummen H's kann man verzichten.
#3
vote_ok
von Mexx (2370 Punkte) - 01.08.2016 um 19:29 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PigLatin
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Geben Sie ein Wort oder einen Text ein");
            string text = Console.ReadLine();
            string[] split = text.Split(' ');
            Console.WriteLine("");
            Console.WriteLine("Ergebnis:\n");

            foreach (string str in split)
            {
                Console.Write(Verschluesseln(str) + " ");
            }
            Console.ReadKey();
        }

        /// <summary>
        /// Prüft ob das übergebene Wort mit einem Vokal beginnt
        /// </summary>
        /// <param name="wort">Das zu prüfende Wort</param>
        /// <returns>true wenn das Wort mit einem Vokal beginnt, ansonsten false</returns>
        static bool IsVokal(string wort)
        {
            string vokale = "AaEeIiOoUu";
            if (vokale.Contains(wort[0]))
                return true;
            return false;
        }

        /// <summary>
        /// Prüft ob das übergebene Wort mit einem Konsunantencluster beginnt
        /// </summary>
        /// <param name="wort">Das zu prüfende Wort</param>
        /// <returns>Beginnt das Wort mit einem Konsunantencluster wird dieser zurück
        /// gegeben, ansonsten ein leerer String</returns>
        static string IsCluster(string wort)
        {
            string[] cluster2 = new string[] { "st", "qu" };     //Weitere Cluster aus zwei Buchstaben hier eintragen
            string[] cluster3 = new string[] { "thr", "sch" };   //Weitere Cluster aus drei Buchstaben hier eintragen

            foreach (string cluster in cluster2)
                if (wort.Substring(0, 2).ToLower() == cluster)
                    return cluster;

            foreach (string cluster in cluster3)
                if (wort.Substring(0, 3).ToLower() == cluster)
                    return cluster;

            return string.Empty;
        }

        /// <summary>
        /// Verschlüsselt das übergebene Wort in Pic Latin
        /// </summary>
        /// <param name="wort">Das zu verschlüsselnde Wort</param>
        /// <returns>
        /// Das verschlüsselte Wort 
        /// (konnte keine Verschlüsselung ermittelt werden, wird das Original zurück gegeben)
        /// </returns>
        static string Verschluesseln(string wort)
        {
            string cluster = string.Empty;
            if (IsVokal(wort))
            {
                return wort + "-ay";
            }
            else if ((cluster = IsCluster(wort)).Length > 0)
            {
                if (cluster.Length == 2)
                {
                    string sub = wort.Substring(2, wort.Length - 2);
                    return sub + "-" + cluster + "ay";
                }
                else if (cluster.Length == 3)
                {
                    string sub = wort.Substring(3, wort.Length - 3);
                    return sub + "-" + cluster + "ay";
                }
            }
            else
            {
                string sub = wort.Substring(1, wort.Length - 1);
                return sub + "-" + wort[0].ToString().ToLower() + "ay";
            }

            return wort;
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben