![]() Ласло Краус |
Програмирање на језику 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.