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.

Zadanie + vypracovanie

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;
    }

}