Programarea calculatoarelor 2 - Laborator 4

Obiective: Lucrul cu operatori pe biți; efectuarea de calcule matematice.

Problema 1 Calculați rădăcina ecuației f(x) = 0 cu o precizie dată, prin metoda înjumătățirii intervalului, când f este o funcție continuă și monotonă pe un interval pe care schimbă semnul. Funcția f va fi specificată la laborator și se codează direct în program. Capetele intervalului și precizia se citesc de la intrare.
Exemplu: f(x) = e^x + x^2 - 5 pe intervalul [1, 2], cu o precizie de 10^-5.
Indicații Calculul unei valori cu o anumită precizie înseamnă că diferența în valoare absolută între aproximația găsită și valoarea precisă (care nu se cunoaste, dar e sigur in intervalul considerat) să fie cel mult egală cu precizia dorită.
Dacă f(x1) < 0 și f(x2) > 0 (sau invers), calculați valoarea lui f în mijlocul intervalului [x1, x2] și continuați cu subintervalul pe care f schimbă semnul, până la precizia dorită. Se pot folosi funcțiile standard declarate în math.h, de exemplu exp.

Problema 2a Scrieți un program care calculează și afișează ca întreg hexazecimal o sumă de control pe 8 biți pentru o linie de text citită de la intrare, în felul următor: bitul k (pentru 0 ≤ k ≤ 7) reprezintă paritatea sumei (calculată pe un octet) caracterelor din text aflate la indici care dau restul k la impartirea cu 8. Rezolvați problema fără a limita lungimea liniei de text.
Explicații. Paritatea unui octet (sau cuvânt de memorie) se definește ca 1 dacă acesta are un număr impar de biți de 1, și 0 dacă are un număr par.
Indicii caracterelor în text se numără de la zero.
Pentru a obține de exemplu bitul 3 al sumei de control se adună caracterele de pe pozițiile 3, 11, 19, etc. din text, și se calculează paritatea octetului rezultat. Caracterul final de linie nouă se consideră că face parte din text.

Laboratorul de anul trecut conține și alte două probleme mai complexe, utile ca exerciții.


Marius Minea
Last modified: Tue Oct 26 07:09:10 EEST 2004