Morseovka – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Morseovka – .NET – Fórum – Programujte.comMorseovka – .NET – Fórum – Programujte.com

 

hejnallukas0
Návštěvník
21. 2. 2011   #1
-
0
-

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?

Nahlásit jako SPAM
IP: 80.188.69.–
hejnallukas0
Návštěvník
21. 2. 2011   #2
-
0
-

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();
}
}
}

Nahlásit jako SPAM
IP: 80.188.69.–
nervak0
Věrný člen
22. 2. 2011   #3
-
0
-

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;
}

Nahlásit jako SPAM
IP: 213.211.51.–
hejnallukas0
Návštěvník
22. 2. 2011   #4
-
0
-

To nervak : Dík, ale nějak nevím jak to vložit do kodu .

Nahlásit jako SPAM
IP: 80.188.69.–
nervak0
Věrný člen
22. 2. 2011   #5
-
0
-

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]) + " ");
}
}

Nahlásit jako SPAM
IP: 213.211.51.–
hejnallukas0
Návštěvník
23. 2. 2011   #6
-
0
-

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 ?

Nahlásit jako SPAM
IP: 80.188.69.–
nervak0
Věrný člen
23. 2. 2011   #7
-
0
-

Mezi písmeny a slovy je oddělovač.

Nahlásit jako SPAM
IP: 213.211.51.–
hejnallukas0
Návštěvník
23. 2. 2011   #8
-
0
-

To nervak : A jak ho mám vyjádřit v kodu ?

Nahlásit jako SPAM
IP: 80.188.69.–
nervak0
Věrný člen
23. 2. 2011   #9
-
0
-

Jak chceš, třeba jako mezeru ' ', nebo cokoliv mimo '.' a '-'.

Nahlásit jako SPAM
IP: 213.211.51.–
slawe
~ Anonymní uživatel
3 příspěvky
23. 2. 2011   #10
-
0
-

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

Nahlásit jako SPAM
IP: 212.111.5.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

Morseovka — založil Keenan

Morseovka — založil luk011

Morseovka do souboru — založil hejnallukas

Morseovka v Javě — založil blondyna

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý