Valentínska akcia je tu! Získaj až 80 % extra kreditov ZADARMO na náš interaktívny e-learning. ZISTIŤ VIAC:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:
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

 
Odpovedať
31.5.2015 10:44
Avatar
Odpovedá na pukasdr
Libor Šimo (libcosenior):31.5.2015 11:38

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

Editované
Hore Odpovedať
31.5.2015 11:38
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
qwertyW
Tvůrce
Avatar
Odpovedá 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...

Hore Odpovedať
31.5.2015 11:40
Programuji, tedy jsem.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovedá na pukasdr
Jan Vargovský:31.5.2015 13:51

Kolik nabízíš?

 
Hore Odpovedať
31.5.2015 13:51
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovedá 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.

Hore Odpovedať
31.5.2015 16:07
2 + 2 = 5 for extremely large values of 2
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 5 správy z 5.