Évidemment, je suis nouveau à ce sujet, d'où le contenu de ce projet. J'ai écrit un code qui traduira l'anglais en Pig Latin. Assez facile. Le problème est que je veux trouver un moyen de traduire le latin Pig en anglais en utilisant un bloc logique. La chaîne de clones semble juste comme un moyen bon marché de le faire. Aucune suggestion? Voici mon code:C# traducteur du latin Pig vers l'anglais
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());
}
}
}
}
Le problème est qu'il n'y a pas de véritable règle qui fonctionnerait. Par exemple: Si la troisième lettre du dernier était "w", vous pourriez vouloir dire que c'est un mot voyelle, mais un mot consonne commençant par un "w" pourrait également correspondre à cette règle. Si la première lettre était encore une voyelle, vous pourriez vouloir dire que c'est un mot de voyelle mais, un mot de consonne pourrait également adapter cette règle puisque la première lettre est déplacée vers l'arrière (pat = atpay). La seule façon que je pense que cela est possible est d'avoir une instruction if qui vérifie si w est en 3ème position et le mot commence par une voyelle qui appelle l'opérateur & & et Visual Studio vous crie dessus si vous l'utilisez avec des chaînes.
exactement ce que je pense. Donc, dans ce cas particulier, je ne manque pas vraiment quelque chose. J'ai couru dans une impossibilité? –
Oui, je pense que la traduction unique est (la plupart du temps) impossible. Mais peut-être que vous pourriez donner différentes traductions en cas de multiples possibilités ... – digEmAll
wow quelle entreprise qui prendrait beaucoup de brainstorming pour trouver tous les cas multiples ... ou je pourrais créer une fonction qui s'occuperait de ça pour moi. D'ACCORD. Je pense que je suis sur le bon chemin maintenant. Merci digEmAll et tous les autres qui m'ont aidé! –