next up previous
Next: About this document Up: Vaje 16 Previous: LIFO in FIFO metoda

2. Primer

Naša nova vrsta je sestavljena iz členov, ki si med seboj sledijo v krogu. Imenujemo jo hodnik Vrsta2.h:

#include "../../code/bool/bool.h"
#define max_vrsta 10      // najvecja mozna dolzina vrste

class Vrsta {
private:                  // ZASEBNO - NE GLEJ!

  int hodnik[max_vrsta];  // krozna vrsta s shranjenimi elementi
  int prvi,               // polozaj prvega elementa
                zadnji;   // v resnici polozaj prvega prostega mesta
                          // v vrsti
  bool zakljucena;        // vsa mesta v vrsti so zapolnjena

public:                   // JAVNO
//--------------------------USTVARJANJE IN UNICEVANJE

  Vrsta();
/* Desc:   Ustvari prazno vrsto.
   Parms:  /
   Result: vrsta
   Pre:    /
   Post:   Prazna()
*/

  ~Vrsta();
/* Desc:   Unici vrsto.
   Parms:  /
   Result: /
   Pre:    Vrsta je bila ustvarjena.
   Post:   Vrste ne moremo vec uporabiti.
*/
//-------------------------SPREMINJANJA

  void Dodaj(int element);
/* Desc:   Doda element v vrsto.
   Parms:  element - element, ki ga dodamo v vrsto ( po vrednosti )
   Result: /
   Pre:    not(Polna()) and [vrsta]
   Post:   vrsta'= [element|vrsta]
*/
  int Izloci();
/* Desc:   Izloci element iz vrste.
   Parms:  /
   Result: element iz vrste
   Pre:    not(Prazna()) and [ostalo|element]
   Post:   vrsta'= [ostalo]
*/
//-------------------------POIZVEDOVANJA

  bool Prazna();
/* Desc:   Preveri, ali je vrsta prazna.
   Parms:  /
   Result: vrsta = []
   Pre:    Vrsta ustvarjena.
   Post:   /
 */
  bool Polna();
/* Desc:   Preveri, ali je vrsta polna.
   Parms:  /
   Result: ce ne moremo vec dodati then TRUE else FALSE
   Pre:    Vrsta je bila ustvarjena.
   Post:   /
*/
};  /* Vrsta */
Vrsta2.cpp:
#include "Vrsta2.h"

Vrsta::Vrsta(){
  prvi = 0;
  zadnji = 0;
  zakljucena = false;
} // Vrsta

Vrsta::~Vrsta(){};

//-------------------------SPREMINJANJA

void Vrsta::Dodaj(int element) {
  hodnik[zadnji] = element;
  zadnji = ((zadnji+1) % max_vrsta);
  zakljucena = (prvi == zadnji);
}   /* Dodaj */

int Vrsta::Izloci() {
  int zac_elt;                     // zacasni element
  zac_elt = hodnik[prvi];
  prvi = ((prvi+1) % max_vrsta);
  zakljucena = false;
  return zac_elt;
}  // Izloci

//-------------------------POIZVEDOVANJA

bool Vrsta::Polna() {
  return (zakljucena);
}  // Polna

bool Vrsta::Prazna() {
  return ((prvi == zadnji) && (!zakljucena));
} // Prazna
Testni program TestKrog.cpp:
#include <stdio.h>
#include "../../code/Vrsta/Vrsta2.h"

int main () {
  Vrsta A;
  int element;
  char ukaz[256];

  scanf("%s", ukaz);
  while (ukaz[0] != 'K') {
    switch (ukaz[0]) {
    case 'V':
    case 'v':
      scanf("%d", &element);
      if (A.Polna()) printf("Ni vec prostora.\n");
      else A.Dodaj(element);
    break;
    case 'I':
    case 'i':
      if (A.Prazna()) printf("V vrsti ni vec elementov.\n");
      else printf("%d\n", A.Izloci());
    break;
    } // switch
    scanf("%s", ukaz);
  } //while

  return 0;

} // main



Andrej Brodnik (Andy)
Tue May 12 11:25:15 MET DST 1998