Visa elektrotehnicka skola, Beograd
Ласло Краус
Објектно програмирање - колоквијуми
Први колоквијум
Прва група
25. 4. 2004.

Задатак | Напомене | Решење

Поставка задатка (решење | садржај)

Пројектовати на језику C++ класу за уређене низове целих бројева. Предвидети:

  1. иницијализацију празног низа задатог капацитета (подразумевано 10),
  2. иницијализацију низа другим низом,
  3. уништавање низа,
  4. додељивање вредности једног низа другом низу (niz1=niz2),
  5. дохватање броја елемената у низу (+niz),
  6. одређивање броја слободних места у низу (-niz)
  7. уметање једног броја у низ (niz+=br),
  8. избацивање сваког појављивања датог бпоја из низа (niz-=br),
  9. одређивање броја појављивања датог броја у низу (niz%br),
  10. исписивање низа (d<<niz).

Саставити на језику C++ главни програм који:

  1. прочита један број и направи празан низ тог капацитета,
  2. чита по један број и убацује га у низ све док се низ не напуни и испише добијени низ,
  3. прочита један број, одреди и испише колико пута се налази у низу,
  4. изоставља свако појављивање броја из претходне тачке и испише добијени низ.

Напомене (садржај)


Решење задатка (поставка | садржај)

// niz.h

#include <iostream.h>
#include <stdlib.h>

class Niz {
  int *niz, kap, duz;
  void kopiraj (const Niz& n);
  void brisi () { delete [] niz; kap = duz = 0; }
public:
  explicit Niz (int k=10) { niz = new int [kap = k]; duz = 0; }
  Niz (const Niz& n) { kopiraj (n); }
  ~Niz () { brisi (); }
  Niz& operator= (const Niz& n) {
    if (this != &n) { brisi (); kopiraj (n); }
    return *this;
  }
  int operator+ () const { return duz; }
  int operator- () const { return kap - duz; }
  Niz& operator+= (int b);
  Niz& operator-= (int b);
  int operator% (int b) const;
  friend ostream& operator<< (ostream& d, const Niz& n);
};

// niz.cpp #include "niz.h" void Niz::kopiraj (const Niz& n) { niz = new int [kap = n.kap]; duz = n.duz; for (int i=0; i<duz; i++) niz[i] = n.niz[i]; } Niz& Niz::operator+= (int b) { int i = duz - 1; while (i>=0 && niz[i]>b) { niz[i+1] = niz[i]; i--; } niz[i+1] = b; duz++; return *this; } Niz& Niz::operator-= (int b) { int p, k; for (p=0; p<duz && niz[p]<b; p++); for (k=p; k<duz && niz[k]==b; k++); if (k > p) while (k < duz) niz[p++] = niz[k++]; duz = p; return *this; } int Niz::operator% (int b) const { int p, k; for (p=0; p<duz && niz[p]<b; p++); for (k=p; k<duz && niz[k]==b; k++); return k - p; } ostream& operator<< (ostream& d, const Niz& n) { d << '['; for (int i=0; i<n.duz; i++) { d<<n.niz[i]; if (i < n.duz-1) d << ','; } return d << ']'; }
// nizt.cpp #include "niz.h" #include <iostream.h> int main () { cout << "Kapacitet? "; int k; cin >> k; Niz niz (k); while (-niz) { cout << "Broj? "; int b; cin >> b; niz += b; } cout << "Niz= " << niz << endl; cout << "Trazi se? "; int b; cin >> b; cout << "Ima ga " << (niz % b) << " puta.\n"; cout << "Izostavljeno: " << (niz -= b) << endl; return 0; }
(садржај)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

Copyright © 2010, Laslo Kraus
Последња ревизија: 4.10.2010.