←
↑
⇑
↓
→
Ласло Краус |
Програмски језици (ЕГ)
Испит
19. 12. 1999.
|
Аутори: Зоран Аврамовић (задатак 1) и
Ласло Краус (задатак 2 са решењем)
Задаци: 1
2
| Напомене
| Решења: 2
Поставка задатка 1 (45 поена)
(⇒ почетак)
Начинити потпрограм типа SUBROUTINE на FORTRAN-у који за задати час и
минут утврђује:
- величину оштрог угла који заклапају казаљке и
- час и минут наредног поклапања казаљки.
у главном програму учитати задати час и минут па позивањем горњег
потпрограма утврдити тражене податке.
Посебне вредности:
Потребно је штампати учитане податке, добијене резултате, потребне
описне текстове, име и презиме, регистарски број и назив факултета.
Поставка задатка 2 (35 поена)
(⇒ решење | почетак)
Саставити на језику C потпрограм којим се применом
бинарног претраживања, проналази на ком месту у датом уређеном низу
бројева се налази неки задати број. Резултат треба да је -1 ако тражени
број се не налази у низу.
Саставити на језику C главни програм који прво прочита
један уређени низ бројева, а после тога чита појединачне бројеве,
проналази њихова места (коришћењем горњег потпрограма) унутар раније
прочитаног низа и исписује добијене резултате, све док уместо броја не
прочита сигнал краја датотеке.
- Испит траје 3 сата. У току првих 60 минута није дозвољено
напуштање сале.
- Рад се предаје искључиво у вежбанци за испит. Није дозвољено
имати поред себе друге листове папира.
- Коришћење литературе на испиту није дозвољено. Обратити пажњу на
форму рада: читљивост, уредност, коментарисање програма и опис
алгоритма утичу на оцену. Препоручује се рад обичном графитном
оловком.
- За позивање на практични део испита неопходно је добити више од
50% поена на оба задатка.
- Тачно урађени домаћи задатак донoси 5 поена.
- Практични део испита доноси 15 поена. На практичном делу
испита кандидати ће уносити своја решења задатка 1) у
рачунар и после ће вршити потребне исправке да би ти програми
исправно радили. Време одржавања као и распоред кандидата по
групама за практични део испита биће накнадно објављен.
#include <stdio.h>
int bitra (float a[], int n, float b) {
int d = 0, g = n-1, s;
while (d <= g) {
if (a[s=(d+g)/2] < b) d = s + 1;
else if (a[s] > b) g = s - 1;
else return s;
}
return -1;
}
void main () {
enum (NMAX=100);
float a[NMAX], b;
int i, n;
printf ("n? "); scanf ("%d", &n);
printf ("A? "); for (i=0; i<n; scanf("%f",&a[i++]));
while (printf ("b? "), scanf("%f",&b)!=EOF) {
if ((i = bitra (a, n, b)) != -1)
printf ("Broj se nalazi u nizu na mestu %d\n", i);
else
printf ("Broj se ne nalazi u nizu.\n");
}
(⇒ почетак)
←
↑
⇑
↓
→
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs
Copyright © 2000, Laslo Kraus
Последња ревизија: 9.3.2000.