Vaje 17

Simona Perčič

9.3.1998

Popravek: VRSTA1.h, VRSTA1.cpp

Definicijski modul najdemo na področju

            Z:\Predavanja\Polde\code\Vrsta\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 */

Izvedbeni modul najdemo na področju

           Z:\Predavanja\Polde\code\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 modul si lahko ogledati na področju

        Z:\Predavanja\Polde\test\Vrsta\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

Nauk današnjih vaj

• Izogibaj se uporabljanju npr:  a++, ampak raje pišia = a + 1
• Vrednosti FALSE in TRUE v programih piši z malimi črkami npr:
false oziroma true
• Dogovor:  Vsak program v C-ju je funkcija (funkcija main, ki
vrne celoštevilski rezultat.
Splošno:  pomeni, da je to naša osebna odločitev
Tihi dogovor:  Če funkcija main (to je program) vrne celoštevilsko
vrednost 0, pomeni, da je funkcija delo opravila brez napake.
Npr.:
int main()  {
       .
       .
       .
  return 0;
} //main