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: Domácí úkol

Aktivity
Avatar
pukasdr
Člen
Avatar
pukasdr:31.5.2015 10:44

ahoj potrebuji poradit :) -> Vytvořte program, kterému předáte textový soubor s libovolným počtem slov oddělených
lomítkem. Program vytvoří nový soubor, kde tyto slova budou seřazena dle počtu znaků
vzestupně a každé slovo bude na novém řádku.
dekuji

 
Odpovědět
31.5.2015 10:44
Avatar
Odpovídá na pukasdr
Libor Šimo (libcosenior):31.5.2015 11:38

Nepotrebujes poradit, potrebujes aby ti niekto napisal ulohu. Ponukni odmenu, mozno sa niekto najde. ;-)

Editováno 31.5.2015 11:39
Nahoru Odpovědět
31.5.2015 11:38
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
qwertyW
Tvůrce
Avatar
Odpovídá na pukasdr
qwertyW:31.5.2015 11:40

pokud potřebuješ poradit, tak si založ vlastní vlákno, a ukaž nám, o co jsi se už pokusil...

Nahoru Odpovědět
31.5.2015 11:40
Programuji, tedy jsem.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na pukasdr
Jan Vargovský:31.5.2015 13:51

Kolik nabízíš?

 
Nahoru Odpovědět
31.5.2015 13:51
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na pukasdr
Martin Dráb:31.5.2015 16:07
Uses
  Generics.Collections;
...
Var
  wp : TPair<Integer, String>;
  ws : TDictionary<Integer, String>;
  w : String;
  Fin, Fout : TexstFile;
  InString, Line : AnsiString;
begin
InString := '';
AssignFile(Fin, 'vstup.txt');
While Not EOF(Fin) Do
  begin
  Readln(Fin, Line);
  InString := InString + Line;
  end;

CloseFile(Fin);
ws := TDictionary<Integer, String>.Create;
While Pos('/', InString) > 0 Do
  begin
  w := Copy(InString, 1, Pos('/', InString) - 1);
  Delete(InString, 1, Pos('/', InString));
  ws.Add(Length(w), w);
  end;

AssignFile(Fout, 'vystup.txt');
For wp In ws Do
  Writeln(Fout, wp.Second);

CloseFile(Fout);
ws.Free;
end.

Takhle přibližně by to vypadalo v nějakém ne příliš starém, lae také ne příliš novém Delphi (např. XE2). Navíc to není napsáno optimálně a ani hezky, ale to už je na tobě. Prostě, asi nejpřímočqřejší řešení spočívá v postupném načtení všech slov a jejich vložení do slovníku dvojic <Delka, Slovo>.

Tady neřeším, jak slovník v Delphi řadí jednotlivé položky, ale třeba u C++ového std::map máš zaručeno, že jeho dopředné procházení ti dvojice seřadí vzestupně dle klíče (délky), předpokládáme-li výchozí nastavení porovnávání.

Jakmile máš slova ve slovníku, stačí jej projít ve správném pořadí (proto jej musí definovat) a vypsat do souboru.

Nahoru Odpovědět
31.5.2015 16:07
2 + 2 = 5 for extremely large values of 2
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 5 zpráv z 5.