next up previous
Next: Nauk današnjih vaj Up: Vaje 17 Previous: Vaje 17

Popravek: VRSTA1.h, VRSTA1.cpp

Definicijski modul najdemo na področju

displaymath45

#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 */

Izvedbeni modul najdemo na področju

displaymath46

#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 modul si lahko ogledati na področju

displaymath47

{

#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)
Wed Mar 25 09:19:57 MET 1998