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

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

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

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

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

Написати на језику Java интерактиван програм (са менијем) који читајући потребне податке с главног улаза:

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


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


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

// Tacka.java

package krive;

public class Tacka { double x, y;
  public Tacka () {}

  public Tacka (double xx, double yy) {x=xx; y=yy;}

  public double x () { return x; }

  public double y () { return y; }
}

// Kriva.java

package krive;

public abstract class Kriva {
  protected abstract double x (double p);

  protected abstract double y (double p);

  public Tacka T ( double p) { return new Tacka (x(p), y(p)); }
}

// Spirala.java

package krive;

public class Spirala extends Kriva {
  private double a, b;

  public Spirala () { a = 1; }

  public Spirala (double aa, double bb) { a = aa; b = bb; }

  protected double x (double p) { return a * p * Math.cos (b+p); }

  protected double y (double p) { return a * p * Math.sin (b+p); }
}

// Oscil.java

package krive;

public class Oscil extends Kriva {
  private double a, b, c;

  public Oscil () { a = b = 1; }

  public Oscil (double aa, double bb, double cc) { a = aa; b = bb; c = cc;}

  protected double x (double p) { return p; }

  protected double y (double p) { return a * Math.sin (b*p+c); }
}

// GKrive.java

package krive;

public abstract class GKrive extends Exception {}

// GIndeks.java

package krive;

public class GIndeks extends GKrive {
  public String toString () { return "*** Nedoszvoljen indeks!"; }
}

// GPuno.java

package krive;

public class GPuno extends GKrive {
  public String toString () { return "*** Mesto je puno!"; }
}

// GPrazno.java

package krive;

public class GPrazno extends GKrive {
  public String toString () { return "*** Mesto je prazno!"; }
}

// Zbirka.java

package krive;

public class Zbirka {
  private Kriva[] niz;
  private int n;

  public Zbirka (int kap) { niz = new Kriva[kap]; }

  public Zbirka () { this (10); }

  public Zbirka stavi (Kriva k, int i) throws GIndeks, GPuno {
    if (i<0 || i>=niz.length) throw new GIndeks ();
    if (niz[i] != null)       throw new GPuno ();
    niz[i] = k;
    return this;
  }

  public boolean parzno (int i) throws GIndeks {
    if (i<0 || i>=niz.length) throw new GIndeks ();
    return niz[i] == null;
  }

  public Zbirka izbaci (int i) throws GIndeks {
    if (i<0 || i>=niz.length) throw new GIndeks ();
    niz[i] = null;
    return this;
  }

  public void tabeliraj (int i, double pMin, double pMax, double dP)
    throws GIndeks, GPrazno {
    if (i<0 || i>=niz.length) throw new GIndeks ();
    if (niz[i] == null)       throw new GPrazno ();
    for (double p=pMin; p<=pMax; p+=dP) {
      Tacka t = niz[i].T(p);
      System.out.printf ("%7.2f  (%.2f,%.2f)\n", p, t.x(), t.y());
    }
  }
}

// KriveT.java

import krive.*;

public class KriveT {
  private static class GIzbor extends GKrive {
    public String toString () { return "*** Nedozvoljen izbor!"; }
  }

  public static void main (String[] varg) {
    Zbirka zbr = new Zbirka (5);
    radi: while (true) {
      try {
        System.out.print ("(Stavi, Izbaci, Tabeliraj, Kraj)? ");
        switch (Citaj.Char()) {
          case 's': {
            System.out.print ("Mesto? ");
            int ind = Citaj.Int ();
            Kriva k = null;
            System.out.print("(Spirala, Oscil)? ");
            switch (Citaj.Char()) {
              case 's':
                System.out.print ("a,b? ");
                zbr.stavi (
                  new Spirala (Citaj.Double(), Citaj.Double()),
                  ind
                );
                break;
              case 'o':
                System.out.print ("a,b,c? ");
                zbr.stavi (
                  new Oscil (Citaj.Double(), Citaj.Double(), Citaj.Double()),
                  ind
                );
                break;
              default: throw new GIzbor ();
            }
            break;
          } case 'i': {
            System.out.print ("Mesto? ");
            zbr.izbaci (Citaj.Int());
            break;
          } case 't': {
            System.out.print ("Mesto? ");
            int ind = Citaj.Int ();
            System.out.print ("pmin,pmax,dp? ");
            zbr.tabeliraj (ind, Citaj.Double(), Citaj.Double(), Citaj.Double());
            break;
          } case 'k': break radi;
          default: throw new GIzbor ();
        }
      } catch (GKrive g) { System.out.println(g); }
    }
  }
}
(садржај)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

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