NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: poradíte mi prosím, jak vytvořit tento projekt na debugování?

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Pavel Novák
Člen
Avatar
Pavel Novák:3.11.2016 19:06

Nevíte někdo jak vytvořit tento program na odstranění bugů?

Odstraňování bugů
Napište program, který jako vstup dostane dvouřádkový soubor „program.txt“ a výstupní soubor uloží jako „bezbugu.txt“. Ve vstupu je první řádek bug a druhý řádek je samotný kód programu. Kód i bug obsahuje číslice a písmena bez diakritiky. Program vezme řetězec bug a odstraní jeho veškerý výskyt v kódu programu. Nesmíte ovšem zapomenout, že odstraněním bugu může vzniknout další. Do souboru „bezbugu.txt“ bude uložen kód programu bez bugů.

Příklad:

vstup:
bug
bububuggbak

výstup:
bubak

 
Odpovědět
3.11.2016 19:06
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Pavel Novák
Petr Šťastný:3.11.2016 19:08

A s čím si nevíš rady? Tohle je zrovna celkem jednoduché...

 
Nahoru Odpovědět
3.11.2016 19:08
Avatar
Pavel Novák
Člen
Avatar
Odpovídá na Petr Šťastný
Pavel Novák:3.11.2016 19:10

právě že s celým programem

 
Nahoru Odpovědět
3.11.2016 19:10
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá na Pavel Novák
Jindřich Máca:3.11.2016 19:13

Mě by spíš zajímalo, v jakém programovacím jazyku to má být? Protože tohle určitě nepatří to "Volné diskuze"...

 
Nahoru Odpovědět
3.11.2016 19:13
Avatar
Pavel Novák
Člen
Avatar
Pavel Novák:3.11.2016 19:25

v C# - console application

 
Nahoru Odpovědět
3.11.2016 19:25
Avatar
Verquido
Tvůrce
Avatar
Odpovídá na Pavel Novák
Verquido:3.11.2016 19:38

Já bych si vzal ten text a hledal v něm požadovanou frázi. Pokud by byla nalezena tak jí vymazal a začal hledat znovu do té doby dokud by tam žádná nebyla.. Použít cyklus

while( bugFound("Fráze") ) { /* DELETE IT */ }

Nezkoušel jsem to, tak snad mě někdo opraví pokud se mýlím :)

Editováno 3.11.2016 19:38
 
Nahoru Odpovědět
3.11.2016 19:38
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Pavel Novák
Petr Šťastný:3.11.2016 20:12

A ten soubor dokážeš uložit, načíst? Jenom nevíš jak odstranit slovo BUG z textu?

Kdyžtak to udělej tak, jak psal Paranormal:

Prohledávej zadaný vstup, dokud v něm bude slovo bug. To odstraň. Ulož.

A myslím, že v C# existuje i metoda, která okamžitě změní text v jiný a to všude (takové ctrl+h). Hodně se to používá na odstraňování mezer z textu :-)

 
Nahoru Odpovědět
3.11.2016 20:12
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:3.11.2016 20:42

C# .NET:

string fraze = "";
string kontrola = "";

using (StreamReader sr = new StreamReader(@"program.txt"))
{
        fraze = sr.ReadLine();
        kontrola = sr.ReadLine();
        sr.Flush()
}

while (fraze.Contains(kontrola))
{
        fraze.Replace(kontrola, "");
}

using (StreamWriter sw = new StreamWriter(@"bezbugu.txt"))
{
        sw.WriteLine(fraze);
        sw.Flush();
}

Napsal jsem to zpaměti, takže nezručuju, že tam nemám chybu. Pokud ti Visual Studio Chybu nahlásí, nebude snad tak těžké ji odstranit. Pokud si nevíš rady se zapisováním či umístěním textáčů, podívej se na zdejší sekci C# Práce se soubory a to zejm. na první tři díly.

Editováno 3.11.2016 20:42
Nahoru Odpovědět
3.11.2016 20:42
Programátor je stroj k převodu kávy na kód.
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:3.11.2016 20:47

Pokud jsi doteď nevěděl, jak to pracuje, tyto články ti jistě odpoví. Na závěr bych si dovolil malý odkaz: www.dotnetperls.com/…-of-a-string

Pokud něco nebude fungovat, klidně se ještě pozeptej

Editováno 3.11.2016 20:49
Nahoru Odpovědět
3.11.2016 20:47
Programátor je stroj k převodu kávy na kód.
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:13.11.2016 11:07

Pavel Novák mi odepsal do soukromých zpráv, ale řešení neměl. Proto zde píšu opravu, vše už šlape jak má.

První problém je jednoduchý na vyřešení: using System.IO
Další problém byl, že neexistuje StreamReader.Flush(), metoda se jmenuje Dispose()
Poslední problém byl, že metoda String.Replace() navrací nový string, nikoliv že modifikuje původní.
Tak jako tak zde přikládám kompletní, funkční otestovaný kód.

using System.IO;

namespace Debuger
{
    class Program
    {
        static void Main(string[] args)
        {
            string fraze = "";
            string kontrola = "";

            using (StreamReader sr = new StreamReader(@"program.txt"))
            {
                kontrola = sr.ReadLine();
                fraze = sr.ReadLine();
                sr.Dispose();
            }

            while (fraze.Contains(kontrola))
            {
                fraze = fraze.Replace(kontrola, "");
            }

            using (StreamWriter sw = new StreamWriter(@"bezbugu.txt"))
            {
                sw.WriteLine(fraze);
                sw.Flush();
            }
        }
    }
}

Pro zkrášlení můžete ještě připsat:

Console.WriteLine("Debugovaný program: {0}", fraze);
Console.ReadKey();

Jedno malé upozornění, soubor program.txt ukládejte v Unicode, jinak program přečte místo diakritiky nějaké nesmysly. Program si umístěte např. do dokumentů, ať nemá UAC problém s přístupem k souborům.

Editováno 13.11.2016 11:09
Nahoru Odpovědět
13.11.2016 11:07
Programátor je stroj k převodu kávy na kód.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.