質問

明らかに私はこれに慣れていないので、このプロジェクトの内容です。私は英語をに翻訳するいくつかのコードを書きました 豚のラテン語. 。簡単です。問題は、論理ブロックを使用して豚のラテン語を英語に戻す方法を見つけたいということです。クローン文字列は、それを行うための安価な方法のように思えます。助言がありますか?これが私のコードです:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FunctionTest
{
    public class PigLatinClass
    {

        public static void pigTalk(string sentence)
        {
            try
            {
                while (sentence != "exit")
                {
                    string firstLetter;
                    string afterFirst;
                    string pigLatinOut = "";
                    int x;
                    string vowel = "AEIOUaeiou";

                    Console.WriteLine("Enter a sentence to convert into PigLatin");

                    sentence = Console.ReadLine();

                    string[] pieces = sentence.Split();

                    foreach (string piece in pieces)
                    {
                        afterFirst = piece.Substring(1);
                        firstLetter = piece.Substring(0, 1);
                        x = vowel.IndexOf(firstLetter);

                        if (x == -1)
                        {
                            pigLatinOut = (afterFirst + firstLetter + "ay ");
                        }
                        else
                        {
                            pigLatinOut = (firstLetter + afterFirst + "way ");
                        }

                        Console.Write(pigLatinOut);
                    }

                    Console.WriteLine("Press Enter to flip the sentence back.");
                    Console.ReadKey(true);
                    string clonedString = null;
                    clonedString = (String)sentence.Clone();
                    Console.WriteLine(clonedString);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

        }
    }
}

問題は、機能する本当のルールがないことです。たとえば、最後の3番目の文字が「w」である場合、これは母音の言葉であると言いたいかもしれませんが、「w」から始まる子音の単語もこのルールに適合する可能性があります。最初の文字が再び母音である場合、これは母音の言葉であると言いたいかもしれませんが、最初の文字が背面に移動されるため、子音の言葉もこのルールに合う可能性があります(pat = atpay)。これが可能だと思う唯一の方法は、Wが3位になり、単語が文字列で使用すると&&オペレーターとビジュアルスタジオが叫ぶ母音で始まるかどうかをチェックするIFステートメントを持つことです。

役に立ちましたか?

解決

問題は、豚のラテン語/英語翻訳が生物的機能ではないことです。

たとえば、次のような英語の単語を2つ持っていると想像してみてください "all""wall", 、対応する豚のラテン語の言葉は常になります "allway".

これは、あなたが次のような言葉を得た場合を示唆しています "allway" 英語でユニークな翻訳をすることはできませんが、(少なくとも)2つ。

他のヒント

これは宿題だと思います。

あなたの教授がおそらく望んでいるのは、あなたが文を豚のラテン語に、そして豚のラテン語から変換することです。元の文字列のコピーを保持すると、既にピグ以外のラテン語版を知っている文から「反転」するだけです。それはあなたが後ろに戻ることを許しません どれか ストリング。

このようにプログラムを構成したいと思います:

public class PigLatinClass
{
    public static string ToPigLatin(string sentence)
    {
        // Convert a string to pig latin
    }

    public static string FromPigLatin(string sentence)
    {
        // Convert a string from pig latin (opposite logic of above)
    }

    public static string PigTalk()
    {
        string sentence;

        Console.WriteLine("Enter a sentence to convert into PigLatin");
        sentence = Console.ReadLine();
        sentence = ToPigLatin(sentence);
        Console.WriteLine(sentence);

        Console.WriteLine("Press Enter to flip the sentence back.");
        Console.ReadKey(true);
        sentence = FromPigLatin(sentence);
        Console.WriteLine(sentence);
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top