Avatar
pukasdr
Člen
Avatar
pukasdr:

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  -10 31.5.2015 10:44
Avatar
Odpovídá na pukasdr
Libor Šimo (libcosenior):

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  +5 31.5.2015 11:38
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
qwertyW
Redaktor
Avatar
Odpovídá na pukasdr
qwertyW:

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

Nahoru Odpovědět  +2 31.5.2015 11:40
Programuji, tedy jsem.
Avatar
Jan Vargovský
Redaktor
Avatar
 
Nahoru Odpovědět  +1 31.5.2015 13:51
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na pukasdr
Martin Dráb:
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  +1 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.