<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=Triedenie_po%C4%BEa_%C5%A1trukt%C3%BAr_%28rie%C5%A1en%C3%A9_pr%C3%ADklady%29</id>
	<title>Triedenie poľa štruktúr (riešené príklady) - História úprav</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=Triedenie_po%C4%BEa_%C5%A1trukt%C3%BAr_%28rie%C5%A1en%C3%A9_pr%C3%ADklady%29"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Triedenie_po%C4%BEa_%C5%A1trukt%C3%BAr_(rie%C5%A1en%C3%A9_pr%C3%ADklady)&amp;action=history"/>
	<updated>2026-05-03T14:24:06Z</updated>
	<subtitle>História úprav pre túto stránku na wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Triedenie_po%C4%BEa_%C5%A1trukt%C3%BAr_(rie%C5%A1en%C3%A9_pr%C3%ADklady)&amp;diff=6674&amp;oldid=prev</id>
		<title>Juraj na 20:28, 16. august 2010</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Triedenie_po%C4%BEa_%C5%A1trukt%C3%BAr_(rie%C5%A1en%C3%A9_pr%C3%ADklady)&amp;diff=6674&amp;oldid=prev"/>
		<updated>2010-08-16T20:28:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sk&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Verzia zo dňa a času 20:28, 16. august 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Riadok 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategória:Študijné materiály]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategória:Programovanie]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategória:jazyk C]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Skripta programovanie (zbierka úloh)}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Skripta programovanie (zbierka úloh)}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Triedenie_po%C4%BEa_%C5%A1trukt%C3%BAr_(rie%C5%A1en%C3%A9_pr%C3%ADklady)&amp;diff=2544&amp;oldid=prev</id>
		<title>Juraj: Vytvorená stránka „Kategória:Študijné materiály Kategória:Programovanie Kategória:jazyk C {{Skripta programovanie (zbierka úloh)}}  ==Triedenie poľa štruktúr== ===Zadani…“</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Triedenie_po%C4%BEa_%C5%A1trukt%C3%BAr_(rie%C5%A1en%C3%A9_pr%C3%ADklady)&amp;diff=2544&amp;oldid=prev"/>
		<updated>2010-03-08T14:10:53Z</updated>

		<summary type="html">&lt;p&gt;Vytvorená stránka „&lt;a href=&quot;/index.php/Kateg%C3%B3ria:%C5%A0tudijn%C3%A9_materi%C3%A1ly&quot; title=&quot;Kategória:Študijné materiály&quot;&gt;Kategória:Študijné materiály&lt;/a&gt; &lt;a href=&quot;/index.php/Kateg%C3%B3ria:Programovanie&quot; title=&quot;Kategória:Programovanie&quot;&gt;Kategória:Programovanie&lt;/a&gt; &lt;a href=&quot;/index.php/Kateg%C3%B3ria:Jazyk_C&quot; title=&quot;Kategória:Jazyk C&quot;&gt;Kategória:jazyk C&lt;/a&gt; {{Skripta programovanie (zbierka úloh)}}  ==Triedenie poľa štruktúr== ===Zadani…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Kategória:Študijné materiály]]&lt;br /&gt;
[[Kategória:Programovanie]]&lt;br /&gt;
[[Kategória:jazyk C]]&lt;br /&gt;
{{Skripta programovanie (zbierka úloh)}}&lt;br /&gt;
&lt;br /&gt;
==Triedenie poľa štruktúr==&lt;br /&gt;
===Zadanie===&lt;br /&gt;
Zostavte program, ktorý bude triediť dáta uložené v súbore na základe užívateľom zadaného kritéria. Program po spustení načíta dáta zo súboru a uloží ich do poľa štruktúr. Následne na monitor zobrazí výzvu, v ktorej bude mať užívateľ možnosť vybrať kritérium triedenia. Pre jednoduchosť uvažujme príklad, v ktorom budeme triediť zamestnancov nejakej fiktívnej firmy podľa mena, priezviska alebo podľa roku jeho narodenia. Dáta v súbore nech sú uložené vo formáte kde jednotlivé položky sú oddelené medzerami čiarkami v tvare:&lt;br /&gt;
 Meno Priezvisko , Rok_narodenia &lt;br /&gt;
===Metodický komentár===&lt;br /&gt;
Cieľom tejto úlohy je precvičiť prácu so štruktúrami v jazyku C, použitie funkcie rýchleho triedenia (quick sort) z knižnice ''stdlib.h'', načítavanie dát zo súboru, a pomôcť osvojiť si základné znalosti pri práci s ukazovateľmi (predávanie ako parameter do funkcie, pretypovávanie).&lt;br /&gt;
===Vzorové dáta===&lt;br /&gt;
 Janko Maly , 1978&lt;br /&gt;
 Martin Starsi , 1939&lt;br /&gt;
 Andrea Mlada , 1990&lt;br /&gt;
 Jozko Cierny , 1985&lt;br /&gt;
 Alenka Biela , 1985&lt;br /&gt;
 Janko Maly , 1983&lt;br /&gt;
 Alzbetka Mudra , 1978&lt;br /&gt;
===Zjednodušujúce predpoklady===&lt;br /&gt;
Dĺžka mena ani priezviska neprekračuje rozsah 20 znakov. V zdrojovom súbore sa nebude nachádzať viac ako 100 záznamov. Zdrojový súbor sa nachádza v tom istom adresáry ako samotný program (*.exe súbor) a jeho názov je: data.txt.&lt;br /&gt;
&lt;br /&gt;
'''Vzorová výzva programu'''&lt;br /&gt;
 Vyber kriterium triedenia.&lt;br /&gt;
   Meno                     1&lt;br /&gt;
   Priezvisko               2&lt;br /&gt;
   Rok narodenia            3&lt;br /&gt;
   Pre ukoncenie programu   0&lt;br /&gt;
 Volba: _&lt;br /&gt;
	&lt;br /&gt;
'''Vzorový vstup'''&lt;br /&gt;
 1	&lt;br /&gt;
&lt;br /&gt;
'''Vzorový výstup'''&lt;br /&gt;
 --------------------------------------------------------&lt;br /&gt;
  ZAMESTNANEC                               ROK NARODENIA&lt;br /&gt;
 --------------------------------------------------------&lt;br /&gt;
  Alenka               Biela                    1985&lt;br /&gt;
  Alzbetka             Mudra                    1978&lt;br /&gt;
  Andrea               Mlada                    1990&lt;br /&gt;
  Janko                Maly                     1983&lt;br /&gt;
  Janko                Maly                     1978&lt;br /&gt;
  Jozko                Cierny                   1985&lt;br /&gt;
  Martin               Starsi                   1939&lt;br /&gt;
 --------------------------------------------------------&lt;br /&gt;
===Návod ako začať===&lt;br /&gt;
Zo zadania vyplýva, že hlavným účelom programu je triediť (vzostupne príp. zostupne zoradzovať) zamestnancov podľa triediaceho kritéria (meno, priezvisko, rok). Aby sme pri manipulácii (triedení) s jednotlivými zamestnancami pracovali ucelene so všetkými dátami vzťahujúcimi sa ku konkrétnemu zamestnancovi naraz, bude výhodné použiť štruktúru, ktorá nám tieto dáta takpovediac &amp;quot;zabalí&amp;quot;. Takto budeme mať údaje o jednom zamestnancovi pohromade a budeme môcť s nimi pohodlne manipulovať. Týmto sme vyriešili problém ako reprezentovať jedného zamestnanca. Teraz sa vynára otázka ako efektívne pracovať s celým súborom zamestnancov. Pretože vieme, že v zdrojovom súbore sa nebude nachádzať viac ako 100 zamestnancov, bude vcelku výhodné použiť statické pole štruktúr na pamätanie všetkých zamestnancov. Dĺžka tohto poľa bude 100 položiek. Jedna položka poľa potom bude predstavovať jedného konkrétneho zamestnanca. Utriedenie zamestnancov potom budeme realizovať utriedením tohto poľa. Pre triedenie poľa ponúka knižnica ''stdlib.h'' funkciu rýchleho triedenia ''qsort''. Parametre a použitie funkcie ''qsort'' z knižnice ''stdlib.h'' sú na stránke [[Qsort (jazyk C)|qsort]].&lt;br /&gt;
&lt;br /&gt;
===Možné riešenie v jazyku C===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot; line &amp;gt;&lt;br /&gt;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define NAZOV_SUBORU &amp;quot;data.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Vytvorenie pomenovanej struktury s nazvom &amp;quot;ZAMESTNANEC&amp;quot;&lt;br /&gt;
struct ZAMESTNANEC {&lt;br /&gt;
   char meno[21];&lt;br /&gt;
   char priezvisko[21];&lt;br /&gt;
   int rok_narodenia;&lt;br /&gt;
   };&lt;br /&gt;
&lt;br /&gt;
// Uplne funkcne prototypy pouzivanych funkcii:&lt;br /&gt;
&lt;br /&gt;
// Nacitanie jedineho zamestnanca zo suboru&lt;br /&gt;
int nacitajZAMESTNANEC(FILE *fr, ZAMESTNANEC *V);	 &lt;br /&gt;
&lt;br /&gt;
// Vypisanie jedineho zamestnanca na monitor&lt;br /&gt;
void vypisZAMESTNANEC(ZAMESTNANEC V);			 &lt;br /&gt;
&lt;br /&gt;
// Porovnanie dvoch zamestnancov podla roku narodenia&lt;br /&gt;
int porovnajROK(const void *V1, const void *V2);	 &lt;br /&gt;
&lt;br /&gt;
// Porovnanie dvoch zamestnancov podla mena&lt;br /&gt;
int porovnajMENO(const void *V1, const void *V2); 	 &lt;br /&gt;
&lt;br /&gt;
// Porovnanie dvoch zamestnancov podla priezviska&lt;br /&gt;
int porovnajPRIEZV(const void *V1, const void *V2);      &lt;br /&gt;
&lt;br /&gt;
// Hlavna funkcia programu:&lt;br /&gt;
int main(int argc, char* argv[])&lt;br /&gt;
{&lt;br /&gt;
   ZAMESTNANEC pole[100];         // pole struktur pre uchovavanie jednotlivych zamestnancov&lt;br /&gt;
   int Pocet_zamestnancov = 0;    // pocet nacitanych zamestnancov&lt;br /&gt;
   int volba;                     // kriterium triedenia / ukoncenia programu&lt;br /&gt;
   FILE *fr;                      // pointer na subor&lt;br /&gt;
   int i;                         // pomocna premenna&lt;br /&gt;
   &lt;br /&gt;
   // Otvorenie zdrojoveho suboru v rezime &amp;quot;read&amp;quot;&lt;br /&gt;
   if((fr=fopen(NAZOV_SUBORU,&amp;quot;r&amp;quot;))==NULL)&lt;br /&gt;
   {&lt;br /&gt;
      printf(&amp;quot;\n Pozadovany subor sa nepodarilo otvorit!\n&amp;quot;);&lt;br /&gt;
      system(&amp;quot;pause&amp;quot;);&lt;br /&gt;
      exit(1);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // Nacitanie vsetkych zamestnancov zo suboru&lt;br /&gt;
   for(i=0; nacitajZAMESTNANEC(fr,&amp;amp;pole[i]); i++)&lt;br /&gt;
   {&lt;br /&gt;
      ;&lt;br /&gt;
   }&lt;br /&gt;
   Pocet_zamestnancov = i;&lt;br /&gt;
   fclose(fr); // zatvorenie suboru, data uz su nacitane..&lt;br /&gt;
   fr = NULL;  // zaroven nastavime na NULL pre pripad aby sme &lt;br /&gt;
               // v pripade chybneho pouzitia tohto poitera boli vcas varovani&lt;br /&gt;
   &lt;br /&gt;
   // Hlavny cyklus programu &lt;br /&gt;
   do{&lt;br /&gt;
      printf(&amp;quot;\n Vyber kriterium triedenia. \n&amp;quot;&lt;br /&gt;
               &amp;quot;   Meno                     1\n&amp;quot;&lt;br /&gt;
	       &amp;quot;   Priezvisko               2\n&amp;quot;&lt;br /&gt;
	       &amp;quot;   Rok narodenia            3\n\n&amp;quot;&lt;br /&gt;
	       &amp;quot;   Pre ukoncenie programu   0\n\n&amp;quot;&lt;br /&gt;
               &amp;quot; Volba: &amp;quot;);&lt;br /&gt;
      scanf(&amp;quot;%d&amp;quot;,&amp;amp;volba);&lt;br /&gt;
      &lt;br /&gt;
      switch(volba)&lt;br /&gt;
      {&lt;br /&gt;
         case 0: break;&lt;br /&gt;
         case 1: qsort((void*)pole,Pocet_zamestnancov,sizeof(ZAMESTNANEC),porovnajMENO);   break; &lt;br /&gt;
                                    // namiesto sizeof(ZAMESTNANEC) mozeme pouzit sizeof(pole[0])&lt;br /&gt;
         case 2: qsort((void*)pole,Pocet_zamestnancov,sizeof(ZAMESTNANEC),porovnajPRIEZV); break;&lt;br /&gt;
         case 3: qsort((void*)pole,Pocet_zamestnancov,sizeof(ZAMESTNANEC),porovnajROK);    break;&lt;br /&gt;
         default:&lt;br /&gt;
            printf(&amp;quot;\n Neocakavany vstup. Program bude ukonceny.\n&amp;quot;);&lt;br /&gt;
            volba=0;&lt;br /&gt;
      }&lt;br /&gt;
      if(volba) // Vypisanie utriedeneho pola na monitor&lt;br /&gt;
      {&lt;br /&gt;
         clrscr(); //vycistime si obrazovku&lt;br /&gt;
         printf(&amp;quot;--------------------------------------------------------\n&amp;quot;);&lt;br /&gt;
         printf(&amp;quot; ZAMESTNANEC                               ROK NARODENIA\n&amp;quot;);&lt;br /&gt;
         printf(&amp;quot;--------------------------------------------------------\n&amp;quot;);&lt;br /&gt;
         for(i=0; i&amp;lt;Pocet_zamestnancov; i++)&lt;br /&gt;
            vypisZAMESTNANEC(pole[i]);&lt;br /&gt;
         printf(&amp;quot;--------------------------------------------------------\n&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
   }while(volba);&lt;br /&gt;
&lt;br /&gt;
   system(&amp;quot;pause&amp;quot;);&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Definicie pouzivanych funkcii:&lt;br /&gt;
//---------------------------------------------------------------------------&lt;br /&gt;
int nacitajZAMESTNANEC(FILE *fr, ZAMESTNANEC *V)&lt;br /&gt;
{&lt;br /&gt;
   int a;&lt;br /&gt;
   a = fscanf(fr,&amp;quot;%s %s , %d&amp;quot;, V-&amp;gt;meno, V-&amp;gt;priezvisko, &amp;amp;V-&amp;gt;rok_narodenia);&lt;br /&gt;
   if(a == EOF) a = 0;&lt;br /&gt;
   return a;&lt;br /&gt;
}&lt;br /&gt;
//---------------------------------------------------------------------------&lt;br /&gt;
void vypisZAMESTNANEC(ZAMESTNANEC V)&lt;br /&gt;
{&lt;br /&gt;
   printf(&amp;quot; %-20s %-20s     %d\n&amp;quot;, V.meno, V.priezvisko, V.rok_narodenia);&lt;br /&gt;
}&lt;br /&gt;
//---------------------------------------------------------------------------&lt;br /&gt;
int porovnajROK(const void *V1, const void *V2)&lt;br /&gt;
{&lt;br /&gt;
   return ((ZAMESTNANEC*)V1)-&amp;gt;rok_narodenia - ((ZAMESTNANEC*)V2)-&amp;gt;rok_narodenia;&lt;br /&gt;
}&lt;br /&gt;
//---------------------------------------------------------------------------&lt;br /&gt;
int porovnajMENO(const void *V1, const void *V2)&lt;br /&gt;
{&lt;br /&gt;
   return strcmp(((ZAMESTNANEC*)V1)-&amp;gt;meno, ((ZAMESTNANEC*)V2)-&amp;gt;meno);&lt;br /&gt;
}&lt;br /&gt;
//---------------------------------------------------------------------------&lt;br /&gt;
int porovnajPRIEZV(const void *V1, const void *V2)&lt;br /&gt;
{&lt;br /&gt;
   return strcmp(((ZAMESTNANEC*)V1)-&amp;gt;priezvisko, ((ZAMESTNANEC*)V2)-&amp;gt;priezvisko);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Komentár k uvedenému riešeniu===&lt;br /&gt;
V programe sa na prvý pohľad nachádza zopár zvláštností. Prvou je  prázdne telo cyklu ''for'' pri načítavaní zamestnancov zo súboru - pozri riadok xx programu (nachádza sa tam len bodkočiarka za účelom zdôraznenia vedomého vypustenia tela funkcie). Dôvodom je, že samotné načítanie zamestnancov sa nachádza v porovnávacej (testovacej) časti cyklu ''for''. Ak sa úspešne načíta nejaký zamestnanec zo súboru potom funkcia ''nacitajZAMESTNANEC'' vracia nenulové kladné číslo, v opačnom prípade nulu a cyklus ''for'' sa skončí. Druhou zvláštnosťou je spôsob načítavania položiek &amp;quot;meno&amp;quot;, &amp;quot;priezvisko&amp;quot; a &amp;quot;rok_narodenia&amp;quot; v tele definicie funkcie ''nacitajZAMESTNANEC'' - pozri riadok xx. V tomto prípade s výhodou využívame možností funkcie ''fscanf'', pričom využívame skutočnosť, že jednotlivé položky sú oddelené medzerou a čiarkou. Treťou zvláštnosťou je použitie typu ''const void *'' v parametroch a následné pretypovávanie v tele na pointer na pomenovanú štruktúru ZAMESTNANEC vo všetkých troch porovnávacích funkciách - ''porovnajMENO'', ''porovnajPRIEZV'' a ''porovnajROK''. Toto priamo súvisí s požiadavkou na parametre porovnávacej funkcie, ktorá musí vyhovovať funkčnému prototypu funkcie triedenia - ''qsort''. &lt;br /&gt;
====Nedostatky uvedeného riešenia a námety na zlepšenie====&lt;br /&gt;
Program nie je vhodný na triedenie väčšieho množstva dát. Pri triedení sa manipuluje s celými položkami (štruktúra ZAMESTNANEC), ktoré majú v tomto prípade veľkosť sizeof(ZAMESTNANEC) == 48 Bajtov. Funkcia ''qsort'' tak musí pri triedení kopírovať celý obsah, čo môže byť časovo náročné. Ak by navyše jednotlivé položky uchovávali ešte väčie množstvo dát (ďalšie údaje o zamestnancovi, ako napríklad pracovné zaradenie, osobné hodnotenie zamestnanca, kontaktné informácie a pod.) bola by situácia ešte horšia. Podobný nedostatok má aj funkcia vypisZAMESTNANEC. V tomto prípade však tento problém nie je kritický. Prvou možnosťou ako zefektívniť triedenie je redukovanie veľkosti štruktúry ZAMESTNANEC. To sa dá docieliť použitím dynamicky alokovanej pamäte pre uchovávanie mena a priezviska zamestnanca. V tomto prípade by mohla štruktúra ZAMESTNANEC vyzerať nasledovne:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot; &amp;gt;&lt;br /&gt;
struct ZAMESTNANEC {&lt;br /&gt;
   char *meno;&lt;br /&gt;
   char *priezvisko;&lt;br /&gt;
   int rok_narodenia;&lt;br /&gt;
   };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Potom by sa pamäťové nároky na uchovávanie redukovali na 12 Bajtov. Je však nevyhnutné pamätať na to, že adresy uchovávané v položkách &amp;quot;meno&amp;quot; a &amp;quot;priezvisko&amp;quot; môžu byť ľubovolné (sú neinicializované) a preto môžu ukazovať na ľubovolné miesto v pamäti. Preto treba použiť dynamickú alokáciu pamäte (funkcia malloc, resp. operátor new) a ukazovatele &amp;quot;meno&amp;quot; a &amp;quot;priezvisko&amp;quot; správne nastaviť (využitím návratovej hodnoty funkcie malloc, resp. operátora new).&lt;br /&gt;
&lt;br /&gt;
Ďalšou možnosťou ako zefektívniť triedenie je použitie poľa ukazovateľov na prvky typu ZAMESTNANEC. Ukazovateľ na typ ZAMESTNANEC (či už pôvodný alebo tu uvedený) má veľkosť 4 Bajty. Z pohľadu triedenia funkciou qsort je preto tento spôsob ešte výhodnejší. &lt;br /&gt;
&lt;br /&gt;
Použitím kombinácie oboch možností (dynamicky alokovaný priestor pre uchovávenie jednotlivých záznamov typu ZAMESTNANEC a použitie poľa ukazovateľov na prvky typu ZAMESTNANEC pre účely triedenia) je možné dosiahuť hospodárne využitie pamäte a zároveň efektívne triedenie rozsiahlejšieho súboru dát.&lt;br /&gt;
&lt;br /&gt;
Druhou možnosťou sa zaoberá nasledujúca časť - Triedenie poľa ukazovateľov.&lt;/div&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
</feed>