Písomka z júl 2008
Created: 2010-06-17 - 13:16
Táto písomka bola na štátniciach pred dvomi rokmi. V rámci solidarity mi môžete potom napísať pripomienky k jednotlivým riešeniam a ja sa s nimi podelím.
Zdrojove kody k uloham:
Taylorov rozvoj:
public class TaylorovRozvoj {
public static void main(String[] args) {
System.out.println(Cos(Math.toRadians(45), 3));
System.out.println(Math.cos(Math.toRadians(45)));
}
public static double Cos(double x, int presnost) {
double ret = 0;
for (int i = 0; i < presnost; i++) {
ret += ((Math.pow(-1, i) * Math.pow(x, 2 * i)) / factorial(2 * i));
}
return ret;
}
private static int factorial(int i) {
if (i == 0)
return 1;
else
return i * factorial(i - 1);
}
}
Zasobnikovy automat:
import java.util.Stack;
public class ZasobnikovyAutomat {
public static void main(String[] args) {
System.out.println(akceptujeL("caaaabbbbc"));
}
/**
* L = {ca^nb^nc; n>=1} example: caaaabbbbc
*/
public static boolean akceptujeL(String slovo) {
Stack<Character> zasobnik = new Stack<Character>();
// prvy znak musi byt c
if (slovo.charAt(0) != 'c')
return false;
int stav = 0;
for (int i = 1; i < slovo.length() - 1; i++) {
if (slovo.charAt(i) == 'a' && stav == 0){
zasobnik.push('X');
}
else if (slovo.charAt(i) == 'b') {
if(!zasobnik.empty())
zasobnik.pop();
else
return false;
stav = 1;
} else
return false;
}
// posledny znak musi byt c
if (slovo.charAt(slovo.length() - 1) != 'c')
return false;
// akceptujeme prazdnym zasobnikom
if (!zasobnik.empty())
return false;
return true;
}
}