Diskuze: Domácí úkol
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Nepotrebujes poradit, potrebujes aby ti niekto napisal ulohu. Ponukni odmenu, mozno sa niekto najde.
pokud potřebuješ poradit, tak si založ vlastní vlákno, a ukaž nám, o co jsi se už pokusil...
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.
Zobrazeno 5 zpráv z 5.