![]() Ласло Краус |
Програмирање 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.