Elektrotehnicki fakultet, Beograd  Ласло Краус Програмски језици (ЕГ)
Испит
10. 11. 2000.

Аутори: Зоран Аврамовић (задатак 1) и Ласло Краус (задатак 2 са решењем)

Задаци: 1 2 | Напомене | Решења: 2

Поставка задатка 1 (45 поена) ( почетак)

У циљу претходне провере хардверске реализације генератора случајних бројева начинити потпрограм типа FUNCTION на FORTRAN-у за генерисање случајних бројева између 0 и 1 према следећој шеми (садржај регистра се помера за једно место улево уметањем резултантног бита на прву позицију):

У главном програму, позивањем горњег потпрограма, генерисати и табелирати n случајних бројева.

Такође, штампати име и презиме, регистарски број и одсек кандидата.

Алгоритам реализовати у општем облику, а посебне податке унети на почетку главног програма.

Посебни подаци: почетно стање регистра (семе) је дато на слици док је n = 20.

Поставка задатка 2 (35 поена) ( решење | почетак)

Саставити на језику C потпрограм за уметање у низ целих бројева (чији су елемети уређени по неопадајућем редоследу) садржај другог низа целих бројева (чији су елементи уређени по нерастућем редоследу) тако да елементи првог низа и даље буду уређени по неопадајућем редоследу.

Саставити на језику C главни програм који прочита два низа целих бројева, позове горњи потпрограм, испише добијени резултат и понавља претходне кораке све док за дужину једног од низова низа не прочита недозвољену вредност.


Напомене ( почетак)


Решење задатка 2 ( поставка | почетак)

#include <stdio.h>

#define MAX 40

void umetni(int a[], int *na, int b[], int nb) {
  int ia=*na-1, ib=0, ic=*na+nb-1;
  *na = ic + 1;
  while (ia>=0 && ib<nb) a[ic--] = a[ia]>b[ib] ? a[ia--] : b[ib++];
  while (ib<nb)          a[ic--] = b[ic++];
}

void main () {
  int a[MAX], b[MAX], i, na, nb;
  while (1) {
    printf ("\nna, nb? "); scanf ("%d%d", &na, &nb);
  if (na < 0 || na > MAX || nb < 0 || nb > MAX) break;
    printf ("A? "); for (i=0; i<na; scanf ("%d", &a[i++]));
    printf ("B? "); for (i=0; i<nb; scanf ("%d", &b[i++]));
    izostavi (a, &na, b, nb);
    printf ("A= "); for (i=0; i<na; printf ("%d ", a[i++]));
    putchar ('\n');
  }
}
( почетак)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

Copyright © 2000, Laslo Kraus
Последња ревизија: 18.12.2000.