←
↑
⇑
↓
→
Ласло Краус |
Програмски језици (ЕГ)
Испит
20. 10. 2000.
|
Аутори: Зоран Аврамовић (задатак 1) и
Ласло Краус (задатак 2 са решењем)
Задаци: 1
2
| Напомене
| Решења: 2
Поставка задатка 1 (45 поена)
(⇒ почетак)
Начинити потпрограм типа SUBROUTINE на FORTRAN-у за израчунавање кубног
корена реалне променљиве x применом итеративне формуле:
Вредност почетне апроксимације одредити по формули:
У алгоритму треба предвидети да се итеративни поступак заврши:
- чим се достигне тражена тачност
(ε), тј. када се испуни услов
|yn+1−yn|≤ε,
- ако број извршених итерација постане једнак максимално предвиђеном
броју (m).
Начинити главни програм у коме треба учитати
ε и m па позивањем горњег
потпрограма израчунати вредност кубног корена за x = 0,5 (0,5)
10,0.
Штампати аргуменaт x, број итерација, постигнуту тачност и
вредност кубног корена.
Такође штампати име и презиме, регистарски број, одсек кандидата, датум
испита и потребне описне текстове.
Посебни подаци: ε = 10−5,
m = 100.
Поставка задатка 2 (35 поена)
(⇒ решење | почетак)
Саставити на језику C потпрограм за изостављање свих
елемената низа реалних бројева чије вредности су изван средње трећине
опсега вредности елемената почетног низа.
Саставити на језику C главни програм који прочита низ
реалних бројева, позове горњи потпрограм, испише добијени резултат и
понавља претходне кораке све док за дужину низа не прочита недозвољену
вредност.
- Испит траје 3 сата. У току првих 60 минута није дозвољено
напуштање сале.
- Рад се предаје искључиво у вежбанци за испит. Није дозвољено
имати поред себе друге листове папира.
- Коришћење литературе на испиту није дозвољено. Обратити пажњу на
форму рада: читљивост, уредност, коментарисање програма и опис
алгоритма утичу на оцену. Препоручује се рад обичном графитном
оловком.
- За позивање на практични део испита неопходно је добити више од
50% поена на оба задатка.
- Тачно урађени домаћи задатак донoси 5 поена.
- Практични део испита доноси 15 поена. На практичном делу
испита кандидати ће уносити своја решења задатка 1) у
рачунар и после ће вршити потребне исправке да би ти програми
исправно радили. Време одржавања као и распоред кандидата по
групама за практични део испита биће накнадно објављен.
#include <stdio.h>
#define MAX 20
void izostavi(double a[], int *n) {
int i, j; double min=a[0], max=a[0], d, g;
for (i=1; i<*n; i++)
if (a[i] < min) min = a[i];
else if (a[i] > max) max = a[i];
d = (2*min + max) / 3;
g = (min + 2*max) / 3;
for (i=j=0; i<n; i++)
if (a[i]>=d && a[i]<=g) a[j++] = a[i];
*n = j;
}
void main () {
double a[MAX}; int i, n;
while (1) {
printf ("\nn? "); scanf ("%d", &n);
if (n < 0 || n > MAX) break;
printf ("A? "); for (i=0; i<n; scanf ("%lf", &a[i++]));
izostavi (a, &n);
printf ("A= "); for (i=0; i<n; printf ("%f ", a[i++]));
putchar ('\n');
}
}
(⇒ почетак)
←
↑
⇑
↓
→
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs
Copyright © 2000, Laslo Kraus
Последња ревизија: 20.11.2000.