Zdar, mám problém.
Snažil jsem se vytvořit program na dekódování morseovy abecedy, ale žádný z nich mi nefungoval.
Zkoušel jsem to přes zjištění počtu a znaků a zobrazení každého znaku na monitor uživatele.
Nemáte někdo nějaký nápad?
Fórum › .NET
Morseovka
Asi je těžký to udělat takhle z fleku. Tady máte kód a jestli byste mi poradili s tímhle kódem ?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Dekódování_Morseovy_Abecedy
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(" Zadejte řetezec znaků pro dekódování : ");
string zakladniRetezec = Console.ReadLine();
int pocetZnaku = zakladniRetezec.Length;
for (int a = 0; a >= pocetZnaku; a++)
{
if ((zakladniRetezec == "a") && (zakladniRetezec == "A"))
Console.Write(" .- ");
else if (zakladniRetezec == "b")
Console.Write(" -... ");
else
Console.Write(" Neplatny vstup");
}
Console.ReadLine();
}
}
}
1. podmínka foru... a < pocetZnaku
2. testování jednotlivých znaků řetězce... zakladniRetezec[a] == 'a'
3. dekódování je opačný proces
4. snad nebudeš psát ify pro všechny znaky
static Dictionary<char, string> MorseDict = new Dictionary<char, string>()
{
{ 'A', ".-" },
{ 'B', "-..." },
{ 'C', "-.-." },
};
static string CharToMorse(char c, string def = "?")
{
c = Char.ToUpper(c);
return MorseDict.ContainsKey(c) ? MorseDict[c] : def;
}
To nervak : Dík, ale nějak nevím jak to vložit do kodu .
class Program
{
static Dictionary<char, string> MorseDict = new Dictionary<char, string>()
...
static string CharToMorse(char c, string def = "?")
...
static public void Main()
{
string text = Console.ReadLine();
for (int i = 0; i < text.Length; i++)
Console.Write(CharToMorse(text[i]) + " ");
}
}
Když už jsem u toho kódování do morseovky, napadla mě myšlenka, že bych mohl udělat i program, který by dekódoval morsevu abecedu.
Ale narazil jsem na problém, že nevím jak rozlišit jeden znak, respektivě jedno písmeno tzv. jedno písmeno může být jeden, ale i čtyři znaků, v případěn číslic dokonce pět. Tak se ptám, jestli nevíte jak tento problém vyřešit ?
To nervak : A jak ho mám vyjádřit v kodu ?
Morseovku teď řeším jakožto maturitní práci. Já to dělám tak, že mám 2 soubory, kde v jednom mám znaky v latince (A,B,C ale oddělené enterem) a v druhém morseovku (.-,-...,-.-., opet oddelené řádky). Ty načtu a vložím do pole. no a morseův text k překladu potom vkládám ve formátu .-|-...|-.-.|, tento vstup potom rozdělím podle | ( Split('|') ), a pak porovnávám a vypisuju
string[] vstupnitext = vstupinek.Split('|');
for(int i=0; i < vstupnitext.Length;i++) //překlad po písmenech
{
int p = 0;
bool wh=true;
string[] text = new string[vstupnitext.Length]; //zde se bude zapisovat přeložený text
while (wh) //překlad
{
if (p >=52) {text[i]="_"; wh=false;}
if (vstupnitext[i]==mors[p]) {text[i]= pism[p]; wh=false;}
else {p++;}
}
txtPreklad.Text+=text[i];
}
já to dělám ve windows forms, v případě konzole místo txtPreklad.Text+=text[i]; napiš Console.Write(text[i]);
mors[] - pole s morseovkou
pism[] - pole s latinkou
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Morseovka do souboru — založil hejnallukas
Morseovka - Jak na to? — založil Dumbo
Morseovka v Javě — založil blondyna
Moderátoři diskuze