Diferente pentru problema/lab-10-01 intre reviziile #13 si #14

Nu exista diferente intre titluri.

Diferente intre continut:

== include(page="template/taskheader" task_id="lab-10-01") ==
== include(page="template/taskheader" task_id="lab-10-02") ==
h2. A
 se scrie o funcţie pentru calculul integralei definite, pe un interval dat *[a,b]* a unei funcţii oarecare (cu rezultat real) *f(x)*, prin metoda trapezelor, cu un număr dat de paşi *n*.
Fie tipul *struct mulţime* ce poate reprezenta mulţimi cu numere în intervalul *[0..7]* astfel: bitul *i* din *a* este *1* dacă numărul face parte din mulţime şi *0* altfel. Considerăm biţii numerotaţi de la dreapta spre stânga.
Funcţia primeşte ca argument adresa funcţiei de integrat şi numărul de paşi şi va avea antetul:
== code(c) |
struct mulţime {
   unsigned char a;
};
double integrala( double (*func) (double x), double a, double b, int n )
==
De exemplu, da *a = 99 = (01100011) în baza 2*, atunci muimea va fi *{0, 1, 5, 6}*.
Programul principal va apela funcţia de calcul a integralei pentru două funcţii diferite şi un *n* suficient de mare. Se pot integra functiile *sin(x)* si *cos(x)* pe intervalul *[0, PI]*.
Să se scrie următoarele funcţii (pt 0 <= x <= 7):
== code(c) |
void init(struct multime *m) // iniţializează mulţimea m cu mulţimea vidă
void add(struct multime *m, int x) // adaugă pe x la mulţimea m
void del(struct multime *m, int x) // şterge pe x din mulţimea m
void print(struct multime *m) // afişează mulţimea m
int contains(struct multime *m, int x) // returnează 1 dacă x se află în mulţimea m şi 0 altfel
==
 
Să se scrie un program ce testează funcţiile definite mai sus.
 
 
h2. B
 
Să se modifice structura şi funcţiile definite anterior pentru a putea reprezenta mulţimi de numere întregi, din intervalul *[0, n]*, *n* întreg.
 
Se va folosi un vector de *unsigned char*, fiecare reprezentând câte 8 numere din mulţime: *v[0] - [0..7]*, *v[1] - [8..15]* etc. Va trebui să modificaţi *struct multime* astfel încât să se poată aloca dinamic memorie pentru vector, de exemplu:
 
== code(c) |
struct multime {
    unsigned int n; // numărul maxim de elemente
    unsigned char *a;
};
==
 
h2. Cerinţă
 
Se dă o serie de operaţii. Scrieţi un program care acţionează conform acestora.
 
**Variante**
 
* A **nr** - adaugă numărul **nr** în mulţime
* D **nr** - elimină numărul **nr** din mulţime
* C **nr** - contains(**nr**) - dacă **nr** se află în mulţime, afişaţi **DA**, altfel **NU**
* P        - afişează elementele mulţimii separate prin spaţiu
 
h2. Date de intrare
 
O secvenţă de instrucţiuni ca mai sus, câte una pe linie
 
h2. Date de ieşire
 
Outputul cerut de secvenţă
 
h2. Exemplu
 
table(example). |_. lab-10-01.in |_. lab-10-01.out |
| A 5
A 8
P
C 5
D 5
C 5
P
| 5 8
DA
NU
8
|
 
== include(page="template/taskfooter" task_id="lab-10-01") ==
== include(page="template/taskfooter" task_id="lab-10-02") ==

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.