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

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(basic)
 
Ред 5: Ред 5:
== 1. zadatak ==
== 1. zadatak ==
=== Postavka ===
=== Postavka ===
Dat je sledeći kod na programskom jeziku C.
<syntaxhighlight lang="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;
}
</syntaxhighlight>
* Dati ispis programa;
* Dati izgled steka nakon poslednjeg poziva funkcije <code>f2</code>;
* Dati x86 kod za funkciju <code>f2</code>.


=== Rešenje ===
=== Rešenje ===

Верзија на датум 19. јануар 2024. у 00:06

Овај рок није решен. Помозите SI Wiki тако што ћете га решити.

Januarski ispit 2024. godine održan je 18. januara i trajao je 150 minuta. Postavka roka nije dostupna sa stranice predmeta.

1. zadatak

Postavka

Dat je sledeći kod na programskom jeziku 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;
}
  • Dati ispis programa;
  • Dati izgled steka nakon poslednjeg poziva funkcije f2;
  • Dati x86 kod za funkciju f2.

Rešenje

2. zadatak

Postavka

Rešenje

3. zadatak

Postavka

Rešenje

4. zadatak

Postavka

Rešenje

5. zadatak

Postavka

Rešenje

6. zadatak

Postavka

Rešenje