Namnožení fronty – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Namnožení fronty – C / C++ – Fórum – Programujte.comNamnožení fronty – C / C++ – Fórum – Programujte.com

 

Shadow2334
~ Anonymní uživatel
7 příspěvků
3. 3. 2012   #1
-
0
-

Ahoj, potřeboval bych poradit jakým způsobem vyřešit problém, když potřebuji více front a frontu mám vytvořenou přes strukturu. Mám globálně zadanou proměnnou, na základě její hodnoty potřebuji udělat počet front.  tzn třeba const int = 5; tak potřebuji vytvořit 5 front. A ty jednotlivé fronty uložit do pole, kde na ně potom budu provádět příkazy put, get, .. atd.

Děkuji za rady.

kód struktury: 

struct Fronta
{  
   Fronta()
   {
       hlava = -1;
       ocas = -1;
   }      
 
   void Put(int pozadavek)
   {
       if ( Velikost() == Z - 1 )                 
           throw new Preteceni();
       data[ocas] = pozadavek;
       ocas = ++ocas % Z;
   }      

   int Get()
   {          
       if ( isEmpty() )
           throw new Prazdna();
       int ret = data[hlava];
       hlava = ++hlava % Z;
       return ret;   
   }

   void Cteni()
   {
   for(unsigned int indx = 0;indx<Z-1;indx++)
   {
   cout << data[indx-1] << " ";
   }

   }
 
   int Hlava()
   {          
       if ( isEmpty() )
           throw new Prazdna();

       return data[hlava];
   }
 
   int Velikost()
   {
       return abs(ocas - hlava);
   }
 
   bool isEmpty()
   {
       return ( hlava == ocas ) ? true : false;
   }

   private:
   int data[Z];
   int hlava;
   int ocas;
};
Nahlásit jako SPAM
IP: 79.127.221.–
KIIV
~ Moderátor
+43
God of flame
3. 3. 2012   #2
-
0
-

no sice mas pouzito klicove slovo struct, ale mas z toho udelanej objekt :D

jestli delas tu postu (http://programujte.com/forum/vlakno/20385-fronta-simulace-posty/) tak to uz asi nebude uplne spravne (je tam zmineno ze to nema pouzivat objekty a uz vubec ne pole) 

takze nastudovat pointery a fronty pomoci spojoveho seznamu :)

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Shadow2334
~ Anonymní uživatel
7 příspěvků
3. 3. 2012   #3
-
0
-

díky za reakci :-),  Zadání mám sice velmi podobné ale frontu mám implementovat pomocí pole 

zadání je takovéto:

Problém
V autoservisu plánují opravy dopředu na N pracovních dnů (např. N = 5). Každý den je možno naplá-novat opravy maximálně pro Z zákazníků (např. Z = 7). Každý zákazník, který přišel do servisu, požadu-je opravu na konkrétní den (nejdříve den 0, nejpozději den N - 1). Jednotlivé dny jsou plánovány jako fronta objednaných oprav. Pokud zákazník požaduje opravu na den, kdy fronta není plná, je oprava naplánována do odpovídající fronty. Pokud je fronta na požadovaný den plná, je zákazník odmítnut. Zpracování opravy trvá jednu časovou jednotku. Simulujte průběh plánování oprav, a poté jejich rea-lizaci.
Implementace
 Čísla N, Z deklarujte jako globální konstanty.
 Každý den reprezentujte frontou implementovanou pomocí pole pro Z oprav. Nepoužívejte třídy (fronta bude reprezentována jako struktura).
 N dnů reprezentujte polem, prvky pole budou fronty.
 Prvek fronty (opravu požadovanou zákazníkem) implementujte jako strukturu, která bude obsa-hovat identifikaci požadavku na opravu (číslo typu int) a den, na který je oprava plánována (číslo typu int).
 Průběh plánování dnů (front) reprezentujte cyklem while, který bude ukončen, pokud budou všechny fronty naplněny. V každém kroku cyklu (jedné časové jednotce) bude vygenerován další požadavek na opravu s náhodně vybraným dnem (0 až N - 1). Identifikátorem požadavku je pořa-dí, ve kterém byl vygenerován (první požadavek bude mít identifikátor 1, poslední záleží na počtu odmítnutých zákazníků). Pokud je fronta pro požadovaný den opravy plná, je požadavek odmít-nut, jinak je zařazen do fronty. Realizaci oprav reprezentujte cykly for a while, pomocí nichž po-stupně vyprázdníte po dnech všechny fronty s opravami.

Nahlásit jako SPAM
IP: 79.127.221.–
KIIV
~ Moderátor
+43
God of flame
3. 3. 2012   #4
-
0
-

no vesmes si na zacatku udelas pole front a to akorat prochazis/pridavas/testujes zda je plne

kazdopadne tridy pouzivas takze to bude chtit trosku poupravit ...

neco jako:   pridat( fronta & aktualni, int pozadavek)  a ve fronte nemit zadny metody

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý