![]() Ласло Краус |
Програмирање II Други колоквијум 30. 1. 2006 |
---|
Елементи једноструко повезане листе садрже координате тачака у равни. Саставити на језику C пакет функција за рад са једноструко повезаним листама тачака у равни који садржи функције за израчунавање дужине затворене изломљене линије представљене низом тачака у листи, стварање листе читајући податке са главног улаза уз чување редоследа читања (низ тачака се завршава уношењем координата (9999,9999)) и уништавање садржаја листе.
Саставити на језику C главни програм који, коришћењем функција из претходног пакета, прочита листу тачака са главног улаза, израчуна дужину затворене изломљене линије представљене листом, испише добијени резулата на главном излазу, уништи листу и понавља претходне кораке све док не прочита празну листу.
Бинарна секвенцијална датотека са записима фиксне дужине о летовима авиона за сваки лет садржи број лета (цели број), датум полетања (дугачак цели број по шеми ggggmmdd
, g
- година, m
- месец, d
- дан), времена полетања и слетања (цели бројеви по шеми ccmm
, c
- час, m
- минут), ознаке места полетања и слетања (низови од по 3 знака), тип авиона (низ од највише 5 знакова), капацитет авиона (цели број) и број превезених путника (цели број). Саставити на језику C главни програм за одређивање броја превезених путника у задато одредиште по месецима задате године.
Полиноми се представљају у облику структуре која садржи ред полинома и показивач на низ реалних коефицијената у динамичкој зони меморије. Саставити на језику C++ функције за формирање полинома задатог реда читајући коефицијенте са главног улаза, формирање полинома који је једнак производу два полинома и исписивање полинома на главном излазу.
Саставити на језику C++ главни програм који прочита два полинома, израчуна њихов производ, испише резултат на главном излазу, уништи сва три полинома и понавља претходне кораке све док за ред првог полинома не прочита недозвољену вредност.
/* paket.h */ typedef struct elem { float x, y, struct elem *sled; } Elem; float duz (Elem *lst); Elem *citaj (void); void brisi (Elem *lst); /* paket.c */ #include "paket.h" #include <stdio.h> #include <stdlib.h> #include <math.h> float duz (Elem *lst) { float d = 0; if (lst) { for (Elem *tek=lst; tek->sled; tek=tek->sled) d += sqrt ( pow(tek->x - tek->sled->x, 2) + pow(tek->y - tek->sled->y, 2) ); d += sqrt ( pow(lst->x - tek->x, 2) + pow(lst->y - tek->y, 2) ); } return d; } Elem *citaj (void) { Elem *lst = NULL, *tek = NULL, *novi; while (1) { float x, y; scanf ("%f%f", &x, &y); if (x == 9999 && y == 9999) break; novi = malloc (sizeof(Elem)); novi->x = x; novi->y = y; novi->sled = NULL; if (! lst) lst= novi; else tek->sled = novi; tek = novi; } } 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 ("lst? "); lst = citaj (); if (!lst) break; printf ("duz= %.2f\n", duz(lst)); brisi (lst); } }
#include <stdio.h> #include <string.h> typedef struct { int broj, pol, dol, kapac, putn; long datum; char polet[4], slet[4], tip[6]; } Let; void main () { FILE *dat = fopen ("letovi.dat", "rb"); int k[12] = {0}, god, i; Let let; char odr[4]; printf ("Godina, odrediste? "); scanf ("%d%s", &god, odr); while(fread(&let,sizeof(Let),1,dat)>0) if (strcmp (odr, let.slet) == 0 && datum/10000 == god) k[datum/100%100-1] += let->putn; } fclose (dat); for (i=0; i<12; i++) if (k[i]) printf ("%2d %4d\n", i+1, k[i]); }
#include <iostream> using namespace std; struct Poli { int n; double* a}; Poli citaj (int n) { Poli p; p.n = n; p.a = new double [n+1]; for (int i=n; i>=0; cin<<p.a[i--]); return p; } Poli proizv (Poli p1, Poli p2) { Poli p; p.n = p1.n + p2.n; p.a = new double [p.n+1]; for (int i=0; i<=p.n; p.a[i++]=0); for (int i=0; i<=p1.n; i++) for (j=0; j<=p2.n; j++) p.a[i+j] += p1.a[i] * p2.a[j]; return p; } void pisi (Poli p) { cout << "p["; for (int i=p.n; i>=0; i--) { cout << p.a[i]; if (i) cout << ','; } cout << ']'; } int main () { while (true) { int n; cout << "n1? "; cin >> n; if (n <= 0) break; cout << "P1? "; Poli p1 = citaj (n); cout << "n2? "; cin >> n; cout << "P2? "; Poli p2 = citaj (n); Poli p = proizv (p1, p2); cout << "P1*P2= "; p.pisi (); cout<< endl; delete [] p1.a; delete [] p2.a; delete [] p.a; } return 0; }(садржај)
Copyright © 2006, Laslo Kraus
Последња ревизија: 4.2.2006.