Visa elektrotehnicka skola, Beograd
Ласло Краус
Програмирање на језику Java - колоквијуми
Први колоквијум
Прва група
3. 12. 2005

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

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

Саставити на језику Java следећи пакет класа:

Грешке пријављивати изузецима. У класама за изузетке предвидети састављање текста поруке.

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

На располагању стоји готова класа Citaj у безименом пакету која садржи заједничке методе за читање свих стандардних типова података (датотека \\Xs200−2\Nastava\ProgJava\Citaj.java).


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


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

// GPuna.java

package zbirke;

public class GPuna extends Exception {
  public String toString () { return "*** Zbirka je puna!"; }
}

// Zbirka.java

package zbirke;

public abstract class Zbirka implements Cloneable {
  protected double[] niz;
  protected int n;
  public Zbirka (int k) { niz = new double [k]; }
  public Zbirka () { this (10); }
  public abstract char oznaka ();
  public Object clone () {
    Zbirka zb = null;
    try {
      zb = (Zbirka) super.clone ();
      zb.niz = new double [niz.length];
      for (int i=0; i<n; zb.niz[i]=niz[i++]);
    } catch (CloneNotSupportedException g) {}
    return zb;
  }
  public int prazno () { return niz.length - n; }
  public int puno () { return n; }
  public abstract Zbirka stavi (double b) throws GPuna;
  public String toString () {
    String s = oznaka () + "(";
    for (int i=0; i<n; i++) {
      if (i > 0) s += ",";
      s += niz[i];
    }
    return s + ")";
  }
}

// Niz.java

package zbirke;

public class Niz extends Zbirka {
  public Niz (int k) { super (k); }
  public Niz () { super (); }
  public char oznaka () { return 'N'; }
  public Zbirka stavi (double b) throws GPuna {
    if (n == niz.length) throw new GPuna ();
    int i = n - 1;
    while (i>=0 && niz[i]>b) niz[i+1] = niz[i--];
    niz[i+1] = b; n++;
    return this;
  }
}

// Skup.java

package zbirke;

public class Skup extends Zbirka {
  public Skup (int k) { super (k); }
  public Skup () { super (); }
  public char oznaka () { return 'S'; }
  public Zbirka stavi (double b) throws GPuna {
    int i = 0;
    while (i<n && niz[i]!=b) i++;
    if (i == n) {
      if (n == niz.length) throw new GPuna ();
      niz[n++] = b;
    }
    return this;
  }
}


// ZbirkeT.java

import zbirke.*;

public class ZbirkeT {
  public static void main (String[] varg) {
    while (true) {
      System.out.print ("n? "); int n = Citaj.Int ();
    if (n <= 0) break;
      Zbirka[] niz = new Zbirka [n];
      for (int i=0; i<n;) {
        System.out.print ("Vrs, kap? ");
        char vrs = Citaj.Char ();
        int  kap = Citaj.Int ();
        switch (vrs) {
          case 'N': case 'n':
            niz[i++] = new Niz  (kap); break;
          case 'S': case 's':
            niz[i++] = new Skup (kap); break;
        }
      }
      try {
        while (true) {
          System.out.print ("Broj? ");
          double b = Citaj.Double ();
          for (int i=0; i<n; niz[i++].stavi(b));
        }
      } catch (GPuna g) {}
      int min = niz[0].puno(), max = min, imin = 0, imax = 0;
      for (int i=1; i<n; i++)
        if      (niz[i].puno() < min) { min = niz[i].puno (); imin = i; }
        else if (niz[i].puno() > max) { max = niz[i].puno (); imax = i; }
      System.out.println ("min= " + niz[imin]);
      System.out.println ("max= " + niz[imax]);
    }
  }
}

n? 4 Vrs, kap? n 6 Vrs, kap? s 4 Vrs, kap? n 8 Vrs, kap? s 6 Broj? 1 Broj? 3 Broj? 2 Broj? 1 Broj? 5 Broj? 3 Broj? 4 min= S(1.0,3.0,2.0,5.0) max= N(1.0,1.0,2.0,3.0,3.0,5.0) n? 0
(садржај)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

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