Програмски преводиоци 1/Јануар 2024

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
Овај рок није решен. Помозите СИ Wики тако што ћете га решити.

Јануарски испит 2024. године одржан је 18. јануара и трајао је 150 минута. Поставка рока није доступна са странице предмета.

1. задатак

Поставка

Дат је следећи код на програмском језику C.

int f1(int a) {
    int b = a;
    b = b + 1;
    return b;
}

int f2(int a) {
    int b = a;
    b = b + f1(1);
    return b;
}

int m(int a, int n, int (*m1)(int), int(*m2)(int)) {
    int tmp1, int tmp2;
    tmp1 = f1(a);
    tmp2 = f2(a);
    
    if (n == 0) {
        return 1;
    } else {
        return tmp2 * m(tmp1, n - 1, m1, m2);
    }
}

int main() {
    printf("%d", m(1, 3, &f1, &f2));
    return 0;
}
  • Дати испис програма;
  • Дати изглед стека након последњег позива функције f2;
  • Дати x86 код за функцију f2.

Решење

2. задатак

Поставка

Дата је следећа граматика:

  • <С> -> <С>а
  • <С> -> <С><А>б
  • <С> -> епс
  • <А> -> а
  • <А> -> б
  1. Конструисати аутомат и контролну табелу СЛР(1) аутомата
  2. Исправити граматику тако да се уклони конфликт али семантика остане иста.

Решење

3. задатак

Поставка

Решење

4. задатак

Поставка

Решење

5. задатак

Поставка

Решење

6. задатак

Поставка

Решење