Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Pole struktur v C - výpis prvků podle kritérií

Zdravím. Prosím někoho zasvěceného, kdo má čas, aby mi poradil s následujícím.

Účelem programu je číst znaky ze standardního vstupu a po ukončení vytisknout na standardní výstup podle četnosti. Znaky se stejnou četností musí být seřazeny podle ord. hodnoty a pokud četnost přeteče (má se pracovat s datovým typem unsigned char), vytisknou se místo četnosti tři písmena. Mám vytvořené pole struktur o 255 prvcích (pro každý znak jeden), do kterého ukládám četnost znaků (proměnná sum) a také stav, zda četnost přetekla (proměnná full typu bool). Např. přečtu znak 'a', tak do pole struktur s indexem 97 přičtu 1 k proměnné sum a pokud je četnost maximální, nastavím proměnnou full na true (stav této proměnné testuji ještě před inkrementací). Tolik k načítání. A teď je potřeba prvky seřadit podle četnosti. Řešil jsem to pomocí selection sort. Ještě bylo nutné přidat do struktury další proměnnou ord, která představovala ordinální hodnotu znaku (pořadí se měnilo, tak už pro určení ord. hodnoty nestačil pouhý index v poli, jestli mi rozumíte). Znaky se tedy seřadily podle četnosti od nejvyšší a drůhým průchodem (tentokrát bubble sort) se řadily jen znaky se stejnou četností podle ord. hodnoty. Nakonec program vypsal strukturu na stdout. To vše funguje správně. Asi se ptáte, co mám teda za problém. Jde o to, že k seřazování struktury (prej) vůbec nemusí dojít a přesto lze znaky vypisovat podle zadání. Prosím o lehké nakopnutí, jak to udělat. Jako příklad stačí i obyčejné pole řekněme o 10 číslech {9,4,6,2,7,1,8,3,15,32}. Jak z něj vypsat čísla seřazená od nejvyššího bez použití nějaké řadící metody? Děkuji.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Jako příklad stačí i obyčejné pole řekněme o 10 číslech {9,4,6,2,7,1,8,3,15,32}. Jak z něj vypsat čí…
MaSo 06.10.2012 16:41
MaSo
V zadání projektu je tohle: Ačkoli úloha požaduje tisk histogramu seřazeného podle různých kritérií…
Niko Bellic 06.10.2012 16:48
Niko Bellic
Tím chtějí říct, že data stačí seřadit až ve chvíli, kdy je potřebuješ mít seřazené. Není nutné je ř…
Wikan 06.10.2012 16:49
Wikan
to je blbost: Ačkoli úloha požaduje tisk histogramu seřazeného podle různých kritérií, při řešení n… nový
AZOR 07.10.2012 17:16
AZOR
Jasně že učitel :-) Ale uvítal bych nějakou radu, jak na to. poslední
Niko Bellic 07.10.2012 17:25
Niko Bellic

Jako příklad stačí i obyčejné pole řekněme o 10 číslech {9,4,6,2,7,1,8,3,15,32}. Jak z něj vypsat čísla seřazená od nejvyššího bez použití nějaké řadící metody?

Jedině na kvantovém počítači...:-)

Vypisovat ve správném pořadí čísla z pole nejde, bez toho, aniž bys je předtím seřadil. Což nejde v O(n). Umí to jenom Radix sort a to ještě jenom v některých případech.

to je blbost:

Ačkoli úloha požaduje tisk histogramu seřazeného podle různých kritérií, při řešení není nezbytně nutné data řadit. Tisknout data v určitém pořadí a mít je seřazená v paměti nejsou totožné úlohy.

Takže jestli nemam mít seřazené data a zároven je mam tisknout v nějakém pořadí -> O(n*n) složitost, no fakt magoři, to určitě zadal nějak učitel.

Zpět do poradny Odpovědět na původní otázku Nahoru