![]() Ласло Краус |
Програмирање на језику Java - колоквијуми Први колоквијум 29. 11. 2008 |
---|
Написати на језику Java следећи пакет типова:
*sin(
b*x+
c)
, где су a, b и c вредности параметара синусоиде.
(
f)/(
g)
, где су f и g текстуални прикази садржаних функција.
(
f)+(
f)+…+(
f)
, где је f текстуални приказ једне садржане функције.
Грешке пријављивати изузецима са заједничком наткласом за све врсте грешака у вези са функцијама. У класама за изузетке предвидети састављање текста поруке.
Написати на језику Java програм који направи објекат за функцију sin x + (2 sin 4x+π/2) / (0,5 sin 2x), испише функцију на главном излазу и табелира вредност функције за свако 0≤x≤2π са кораком π/8.
ispitx
(x
је број радне станице за којим се ради). Лозинка на свакој радној станици је student
.I:
(Nastava on \\Xs200-2
).
// GFun.java package funkcije; public abstract class GFun extends Exception { private String por; public GFun( String por) { this.por = por; } public String toString() { return "GRESKA: " + por; } } // Funkcija.java package funkcije; public interface Funkcija { double fun( double x) throws GFun; String toString(); } // Sinus.java package funkcije; public class Sinus implements Funkcija { private double a, b, c; public Sinus( double aa, double bb, double cc) { a = aa; b = bb; c = cc; } public double fun( double x) { return a * Math.sin( b * x + c); } public String toString() { return a + "*sin(" + b + "*x+" + c + ")"; } } // GFunNula.java package funkcije; public class GFunNula extends GFun { public GFunNula() { super( "Deljenje nulom!"); } } // Kolicnik.java package funkcije; public class Kolicnik implements Funkcija { private Funkcija f, g; public Kolicnik( Funkcija ff, Funkcija gg) { f = ff; g = gg; } public double fun( double x) throws GFun { double a = f.fun( x); double b = g.fun( x); if (b == 0) throw new GFunNula(); return a / b; } public String toString() { return "(" + f + ")/(" + g + ")"; } } // GFunPun.java package funkcije; public class GFunPun extends GFun { public GFunPun() { super( "Zbir funkcija je pun!"); } } // Zbir.java package funkcije; public class Zbir implements Funkcija { private Funkcija[] niz; private int n; public Zbir( int k) { niz = new Funkcija [k]; } public Zbir dodaj( Funkcija f) throws GFunPun { if (n == niz.length) throw new GFunPun(); niz[n++] = f; return this; } public double fun( double x) throws GFun { double z = 0; for (int i=0; i<n; i++) z += niz[i].fun( x); return z; } public String toString() { StringBuffer s = new StringBuffer(); for (int i=0; i<n; i++) { if (i > 0) s.append( '+'); s.append( '(').append( niz[i]).append( ')'); } return s.toString(); } } // Test.java import funkcije.*; public class Test { public static void main( String[] varg) { Zbir z = new Zbir (2); try { z.dodaj( new Sinus(1,1,0)) .dodaj( new Kolicnik ( new Sinus (2,4,Math.PI/2), new Sinus (0.5,2,0))); } catch (GFunPun g) {} System.out.println( z); for (int i=0; i<=16; i++) { double x = i * Math.PI / 8; System.out.printf( "%10.6f ", x); try { System.out.printf( "%15.5e\n", z.fun(x)); } catch (GFun g) { System.out.printf( "%15s\n", "ne moze"); } } } }(садржај)
(1.0*sin(1.0*x+0.0))+((2.0*sin(4.0*x+1.5707963267948966))/(0.5*sin(2.0*x+0.0))) 0.000000 ne moze 0.392699 3.82683e-01 0.785398 -3.29289e+00 1.178097 9.23880e-01 1.570796 3.26625e+16 1.963495 9.23880e-01 2.356194 4.70711e+00 2.748894 3.82683e-01 3.141593 -1.63312e+16 3.534292 -3.82683e-01 3.926991 -4.70711e+00 4.319690 -9.23880e-01 4.712389 1.08875e+16 5.105088 -9.23880e-01 5.497787 3.29289e+00 5.890486 -3.82683e-01 6.283185 -8.16562e+15
Copyright © 2010, Laslo Kraus
Последња ревизија: 8.9.2010.