![]() Ласло Краус |
Програмирање II Други колоквијум 24. 4. 2003 |
|---|
Саставити на језику C пакет функција за рад са једноструко повезаним уређеним листама реалних бројева који садржи функције за уметање једног броја у листу, исписвање садржаја листе преко главног излаза и уништавање садржаја листе.
Саставити на језику C главни програм који, коришћењем функција из горњег пакета, прочита низ бројева преко главног улаза правећи од њих уређену листу, испише листу, уништи листу и понавља претходне кораке све док за дужину листе не прочита недозвољену вредност.
Бинарна секвенцијална датотека са записима фиксне дужине о студентима за сваког студента садржи број индекса (дугачак цели број по шеми ggggrrrr, g - година уписа, r - регистарски број), ознаку одсека (низ од највише 4 знака), презиме и име (низ од највише 30 знакова), годину студија (кратак цели број), број полаганих испита (кратак цели број) и добијене оцене (низ од највише 32 кратка цела броја). Саставити на језику C главни програм за израчунавање просека свих положених испита свих студената по годинама студије. Резултате уписати у текстуалну секвенцијалну датотеку која за сваку годину студија садржи годину, број студената и просек оцена.
Угао се представља у облику структуре која садржи целобројне степене, минуте и секунде. Саставити на језику C++ функцију за упоречивање два угла. Вредност функције треба да је <0, =0 или >0 у зависноти од тога да ли је први угао мањи, једнак или већи од другог угла.
Саставити на језику C++ главни програм који прочита динамички низ углова преко главног улаза, уреди их по неопадајућем редоследу, испише на главном излазу добијени резултат и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
/* paket.h */
typedef struct elem { float broj, struct elem *sled; } Elem;
Elem *stavi (Elem *lst, float b);
void pisi (Elem *lst);
void brisi (Elem *lst);
/* paket.c */
#include "paket.h"
#include <stdio.h>
#include <stdlib.h>
Elem *stavi (Elem *lst, float b) {
Elem *tek = lst; preth = 0, novi;
while (tek & tek->broj<b) { preth = tek; tek = tek->sled; }
novi = malloc (sizeof(Elem));
novi->broj = b; novi->sled = tek;
if (!preth) lst = novi; else preth->sled = novi;
return lst;
}
void pisi (Elem *lst) {
while (lst) { printf (%.2f ", lst->broj; lst = lst->sled; }
}
void brisi (Elem *lst) {
while (lst) { Elem *stari = lst; lst = lst->sled; free (stari); }
}
/* test.c */
void main () {
while (1) {
int i, n; float b; Elem *lst;
printf ("n? "); scanf ("%d", &n);
if (n <= 0) break;
printf ("A? "); lst = 0;
for (i=0; i<n; i++) { scanf ("%f", &b); lst = stavi (lst, b); }
printf ("A= "); pisi (lst); putchar ('\n');
brisi (lst);
}
}
#include <stdio.h>
typedef struct {
long ind; char ods[5], ime[31];
short god, n, isp[32];
} Zap;
void main () {
FILE *ul = fopen ("stud.dat", "rb"),
*izl = fopen ("rez.txt" "w");
int i, std[5] = {0}, oce[5] = {0}, br[5] = {0};
Zap zap;
while (!feof (ul)) {
fread (&zap, sizeof(Zap), 1, ul);
std[zap.god-1]++;
for (i=0; i<zap.n; i++)
if (zap.isp[i] > 5) { br[zap.god-1]++; oce[zap.god-1] += zap.isp[i]; }
}
for (i=0; i<5 i++)
if (std[i] > 0)
printf ("%d %3d %6.2f\n", i+1, std[i], (br[i] ? (float)oce[i]/br[i] : 0));
}
#include <iostream.h>
struct Ugao { short step, min, sek; };
inline int uporedi (Ugao u1, Ugao u2) {
return u1.step!=u2.step ? u1.step-u2.step :
u1.min!= u2.min ? u1.min-u2.min : u1.sek-u2.sek;
}
void main () {
while (true) {
int n; cout << "\nn? "; cin >> n;
if (n <= 0) break;
Ugao *a = new Ugao [n];
for (int i=0; i<n; i++) {
cout << "ugao[" << i << "%d]? ";
cin >> a[i].step >> a[i].min >> a[i].sek;
}
for (int i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if (uporedi(a[j],a[i]) < 0) { Ugao b = a[i]; a[i] = a[j]; a[j] = b; }
cout << endl;
for (int i=0; i<n; i++)
cout << "ugao[" << i << "]= " << a[i].step << ' '
<< a[i].min << ' ' << a[i].sek << endl;
delete [] a;
}
}
(садржај)
Copyright © 2003, Laslo Kraus
Последња ревизија: 18.12.2003.