![]() Ласло Краус |
Програмирање II Други колоквијум 13. 1. 2005 |
---|
Саставити на језику C пакет функција за рад са једноструко повезаним листама целих бројева који садржи функције за стварање листе читајући низ бројева са главног улаза уз чување редоследа читања (низ се завршава бројем 9999), додавање на крај листе садржаја друге листе (не правити копију друге листе), исписивање садржаја листе на главном излазу и уништавање садржаја листе.
Саставити на језику C главни програм који, коришћењем функција из горњег пакета, прочита две листе са главног улаза, дода другу листу на крај прве листе, испише резултујућу листу на главном излазу, уништи листу и понавља претходне кораке све док не прочита две празне листе.
Бинарна секвенцијална датотека са записима фиксне дужине о набавкама робе за сваки артикал садржи шифру артикла (низ од највише 8 знакова), датум набавке (велики цели број који датум садржи по шеми ggggmmdd
), јединичну цену (реални број), ознаку јединице мере (низ од највише 3 знака) и количину (реални број). Саставити на језику C главни програм за преписивање података о свим течним артиклима (јединица мере је lit
) у нову секвенцијалну текстуалну датотеку уз израчунавање просечне цене тих артикала по литру запремине. Нова датотека за сваку ставку треба да садржи један ред текста који поред почетних података садржи и вредност артикла у тој ставци.
Круг у равни се представља у облику структуре која садржи координате центра и полупречник круга. Саставити на језику C++ функције за израчунавање најмањег растојања између два круга и за избацивање кругова из низа кругова тако да кругови у резултату немају пресечних тачака.
Саставити на језику C++ главни програм који прочита динамички низ кругова са главног улаза, обезбеди да у кругови у низу немају пресечних тачака, испише добијени резултат на главном излазу и понавља претходне кораке све док за број кругова не прочита недозвољену вредност.
/* paket.h */ typedef struct elem { int broj, struct elem *sled; } Elem; Elem *citaj (void); Elem *dodaj (Elem *lst1, Elem* lst2); void pisi (Elem *lst); void brisi (Elem *lst); /* paket.c */ #include "paket.h" #include <stdio.h> #include <stdlib.h> Elem *citaj (void) { Elem *lst = 0, *tek = 0, novi; while (1) { int b; scanf ("%d", &b); if (b == 9999) break; novi = malloc (sizeof(Elem)); novi->broj = b; novi->sled = NULL; if (! lst) lst= novi; else tek->sled = novi; tek = novi; } return lst; } Elem *dodaj (Elem *lst1, Elem* lst2) { Elem *tek = lst1; if (! tek) return lst2; while (tek->sled) tek = tek->sled; tek->sled = lst2; return lst1; } 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 *lst1, lst2; printf ("lst1? "); lst1 = citaj (); printf ("lst2? "); lst2 = citaj (); if (!lst1 && !lst2) break; lst1 = dodaj (lst1, lst2); printf ("lst1= "); pisi (lst1); putchar ('\n'); brisi (lst1); } }
#include <stdio.h> #include <string.h> typedef struct { char sifra[9], jed[4]; long datum; float cena, kolic; } Zapis; void main () { FILE *ul = fopen ("roba.dat", "rb"), *izl = fopen ("izvest.txt"); float uk_vr = 0, uk_zap = 0; Zapis z; while(fread(&z,sizeof(Zapis),1,ul)>0) if (strcmp (z.jed, "lit") == 0) { float vredn = z.cena * z.kolic; fwritef ( izl, "%-8s %2.2i.%2.2i.%4i %-3s %6.2f %8.2f %10.2f", z.sifra, z.datum%100, z.datum/100%100, z.datum/10000, z.jed, z.kol, z.cena, vredn ); uk_vr+=vredn; uk_zap+=zap.kolic; } fclose (dat); if (uk_zap) printf ("Srednja cena = %.2f\n", uk_vr/uk_zap); else printf ("Nema tecnih artikala.\n"); }
#include <iostream.h> include <math.h> struct Krug { double x, y, r; }; double rast (Krug k1, Krug k2) { return sqrt (pow(k1.x-k2.x,2) + pow(k1.y-k2.y,2)) – k1.r – k2.r; } void sredi (Krug niz[], int& n) { int j = 0; for (int i=1; i<n; i++) { int k = 0; while (k<j && rast(niz[k],niz[i])>=0) k++; if (k == j) niz[j++] = niz[i]; } n = j; } int main () { while (true) { cout << "\nn? "; int n; cin >> n; if (n <= 0) break; Krug *niz = new Krug [n]; for (int i=0; i<n; i++) { cout << "niz[" << i << "] (x,y,r) ?"; cin >> niz[i].x >> niz[i].y >> niz[i].r; } sredi (niz, n); for (int i=0; i<n; i++) cout << "niz[" << i << "]= (" << niz[i].x << ',' << niz[i].y << ',' << niz[i].r << ')' << endl; delete [] niz; } return 0; }(садржај)
Copyright © 2005, Laslo Kraus
Последња ревизија: 30.11.2005.