![]() Ласло Краус |
Програмирање II Други колоквијум 26. 1. 2004 |
---|
Саставити на језику C пакет функција за рад са једноструко повезаним неуређеним листама реалних бројева који садржи функције читање листе преко главног улаза, изостављање свих елемената листе који су једнаки највећем броју у почетној листи, исписивање садржаја листе преко главног излаза и уништавање садржаја листе.
Саставити на језику C главни програм који, коришћењем функција из горњег пакета, прочита листу, изоставља елементе једнаке највећем броју у листи, испише добијени резултат, уништи листу и понавља претходне кораке све док не прочита празну листу.
Бинарна секвенцијална датотека са записима фиксне дужине о студентима за сваког студента садржи број индекса (дугачак цели број по шеми ggggrrrr
, g
- година уписа, r
- регистарски број), ознаку одсека (низ од највише 4 знака), презиме и име (низ од највише 30 знакова), годину студија (кратак цели број), број полаганих испита (кратак цели број) и добијене оцене (низ од највише 32 кратка цела броја). Саставити на језику C главни програм за проналажење студената са највишим просецима положених испита по годинама студија. Резултате уписати у текстуалну секвенцијалну датотеку која за сваку годину студија садржи годину студија и име, одсек, број индекса и просек оцена најбољег студента.
Уређени динамички низ целих бројева представља се структуром која садржи број елемената и показивач на елементе низа. Саставити на језику C++ функције за читање низа преко главног улаза и писање низа преко главног излаза. При читању бројеви се не уносе уређено. Вредност функције треба да указује на успех читања (читање није успешно ако се за дужину низа прочита нула или негативна вредност).
Саставити на језику C++ главни програм који прочита уређени динамички низ целих бројева преко главног улаза, испише га на главном излазу и понавља претходне кораке све док читање низа буде успешно.
/* paket.h */ typedef struct elem { float broj, struct elem *sled; } Elem; Elem *citaj (void); Elem *izost (Elem *lst); void pisi (Elem *lst); void brisi (Elem *lst); /* paket.c */ #include "paket.h" #include <stdio.h> #include <stdlib.h> Elem *citaj (void) { int n, i; Elem *prvi=0, *posl=0; scanf ("%d", &n); for (i=0; i<n; i++) { Elem *novi = malloc (sizeof(Elem)); scanf ("%f", &novi->broj); novi->sled = NULL; if (! prvi) prvi = novi; else posl->sled = novi; posl = novi; } } Elem *izost (Elem *lst) { if (lst) { float max = lst->broj; Elem *tek, *pret; for (tek=prvi->sled; tek; tek=tek->sled) if (tek->broj > max) max = tek->broj; for (tek=prvi, pret=NULL; tek;) if (tek->broj != max) { pret = tek; tek = tek->broj; } else { Elem *stari = tek; tek = tek->sled; if (! pret) prvi = tek; else pret->sled = tek; free (stari); } } 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 */ #include "paket.h" void main () { while (1) { Elem *lst; printf ("Duzina i niz? "); if (! (lst = citaj()) break; lst = izost (lst); pisi (lst); brisi (lst); } }
#include <stdio.h> typedef struct { long ind; char ods[5], ime[31]; short god, n, isp[32]; } Zap; void main () { FILE *dat = fopen ("stud.dat", "rb"); int i; Zap zap, std[5]; float pros[5] = {0}; while (fread (&zap, sizeof(Zap), 1, dat) > 0){ int k = 0, g = zap.god-1; float s = 0; for (i=0; i<zap.n; i++) if (zap.isp[i] > 5) { k++; s += zap.isp[i]; } if (k) s /= k; if (s > pros[g]) { pros[g] = s; stud[g] = zap; } } fclose (dat); dat = fopen ("rez.txt", "w"); for (i=0; i<5 i++) if (pros[i] > 0) printf ("%d %-30s %-4s %4ld/%2.2ld %6.2f\n", i+1, std[i].ime, std[i].ods, std[i].ind%10000, std[i].ind/1000000L, pros[i]); }
#include <iostream.h> struct Niz { int n, *a; }; bool citaj (Niz& niz) { int n; cin >> n; if (n <= 0) return false; niz.a = new int [niz.n = n]; for (int i=0; i<n; i++) { int b; cin >> b; int j = i; while (j>0 && niz.a[i-1]>b) { niz.a[j] = niz.a[j-1]; j--; } niz.a[j] = b; } return true; } void pisi (Niz niz) { for (int i=0; i<niz.n; cout<<niz.a[i++]<<' '); } void main () { while (true) { cout << "\nDuzina i elementi? "; Niz niz; if (! citaj (niz)) break; pisi (niz); cout << endl; delete [] niz.a; } }(садржај)
Copyright © 2004, Laslo Kraus
Последња ревизија: 9.12.2004.