Skip to content

Commit

Permalink
Initial release
Browse files Browse the repository at this point in the history
  • Loading branch information
Oreoezi committed May 4, 2024
1 parent 84d9245 commit 580b41f
Show file tree
Hide file tree
Showing 4 changed files with 169 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Template materie facultate
# Programarea calculatoarelor

## Resurse
67 changes: 67 additions & 0 deletions examene/2020.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
## Exercitiul 1

```c
float vm[8] = {10.0, 20.5, 30.0, 40.5, 50.0, 60.5, 70.0, 80.5};
float *ip = vm + 2;
int a = 4;
int b = 3;
unsigned char c = 50;
```
Evaluati expresiile de mai jos si scrieti rezultatul. Detaliati modul de calcul pentru fiecare expresie.
- ``a >>= 3``
- ``((a << b) - 3) < (b << (a+3))``
- ``a <<= 4 > 20 ? b & ++c : 1``
- ``((a & 0x2f) == (b|1)) && ((~c) > 20)``
- ``(a&b)^(a|b)``
- ``vm + 4``
- ``*vm + 4``
- ``*ip + ip[2]``
## Exercitiul 2
```c
typedef struct {
int x, y;
} Point;
Point p;
p.x = 30;
p.y = 40;
Point *a = &p;
Point **b = &a;
```

Considerand ca `p` are adresa 200, evaluati expresiile de mai jos si scrieti rezultatul:

- ``a``
- ``*a``
- ``a->x``
- ``b``
- ``b->a``
- ``b->x``
- ``*b``
- ``*b->y``
- ``b->a->x``
- ``(*b)->a``
- ``(*b)->y``
- ``**b``

Nu este necesara argumentarea rezultatelor.

<pb/>

## Exercitiul 3

Fie matricea inferior triunghiulara $U$ cu elemente de dimensiune $n$ si un vector $x$ cu $n$ elemente reale.

Scrieti o functie de alocare dinamica care memoreaza economic elementele matricii $U$ (memorand doar elementele din triunghiul inferior) intr-un tablou bidimensional.

### Exemplu:

$\begin{pmatrix} 1 & 0 & 0 \\ 1 & 2 & 0 \\ 1 & 2 & 3\end{pmatrix}$ se memoreaza in forma $\begin{matrix} 1 \\ 1 & 2 \\ 1 & 2 & 3\end{matrix}$

Scrieti o functie care primeste tabloul bidimensional $M$ si tabloul unidimensional $x$ si realizeaza eficient(evita operatiile cu 0) inmultirea matrice-vector.

Indicatie: Fie $r = Mx$, atunci $r_i = \displaystyle\sum_{j=0}^{n-1} M_{ij} x_j$
59 changes: 59 additions & 0 deletions examene/2023-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
## Exercitiul 1 (4p)

```c

union Student {
char nume[10];
unsigned char admis;
unsigned int id;
}
union Student S[4];

union Student *pointer = &S[3];
union Student **dpointer = &pointer;

char a = 40;
unsigned char b = 255;
int x = 1000;
```

Presupunem ca $S=100$. Evaluati urmatoarele expresii si scrieti rezultatul. Detaliati modul de calcul pentru fiecare caz.

- ``strcpy(S[0].nume, "Gabriel"); S[0].admis = '1'; printf("%s", S[0].nume);``
- ``printf("%d", pointer-1);``
- ``char c = (x/a) * 20; printf("%c", c);``
- ``strcpy(S[0].nume, "Gabriel"); *(S+2).nume = S->nume; printf("%s", (S+2)->nume);``
- ``strcpy(S[0].nume, "Gabriel"); printf("%s %d", (*dpointer)->nume, dpointer->pointer);``
- ``char* p = (char*) &x; printf("%d", *(p+1)-1);``
- ``(a&b)|(a^b)``
- ``~a * (b+1);``

## Exercitiul 2 (6p)

Un jurnalist a fost delegat pentru ordonarea arhivei redactiei. Pentru ca articolele din arhiva sunt stocate in format electronic (fisiere text), jurnalistul va executa o sortare a fisierelor folosind limbajul C. Textul fiecarui articol este memorat intr-un fisier text separat, care contine pe linia 0 titlul articolului si, incepand cu linia 2 textul propriu-zis al articolului (vezi exemplul de mai jos).

Folositi un tablou de structuri alocat dinamic pentru a stoca (in campurile structurii) titlul si textul fiecarui articol. Sortati tabloul in ordine alfabetica dupa titlu, iar articolele cu titluri identice (lexicografic) vor fi sortate dupa numarul cuvintelor din text. Pentru sortare folositi functia ``qsort``.

```
NASA.txt:
Statia spatiala
Actualmente activitatea din cadrul statiei spatiale internationale denumita de agentia americana NASA este suspendata.
```

```
UPB.txt:
Activitate academica
Datorita restrictiilor impuse de pandemia actuala COVID-19, Universitatea Politehnica Bucuresti va suspenda activitatea.
```

```
UB.txt:
Activitate academica
Pandemia actuala COVID-19 nu a influentat major Universitatea din Bucuresti.
```
42 changes: 42 additions & 0 deletions examene/2023-3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
## Exericitul 1 (4p)

```c

union Student {
char nume[10];
unsigned char admis;
unsigned int id;
}

union Student S[10];

union Student *pointer = S + 1;
union Student **dpointer = &pointer;
signed char a = 130;
unsigned char b = 255;
int x = 1000;
```

Presupunem ca $S=100$. Evaluati urmatoarele expresii si scrieti rezultatul. Declarati modul de calcul pentru fiecare caz.

- ``strcpy(S[0].nume, "Gabriel"); *(S+2).nume = S->nume; printf("%s", (S+2)->nume);``
- ``printf("%d", pointer - 1);``
- ``char c = (x/a) * 20; printf("%c", c);``
- ``strcpy(S[0].nume, "Gabriel"); printf("%d %d", (*dpointer)->nume, dpointer->pointer);``
- ``strcpy(S[0].nume, "Gabriel"); printf("%s %d", (*dpointer)->nume, dpointer->pointer);``
- ``char* p = (char*) &x; printf("%d", *(p+1)-1);``
- ``(a & ~b) | (~a ^ b)``
- ``~a * (b+1);``

## Exercitiul 2 (6p)

Un lant de magazine dispune de o baza de date stocata intr-un fisier text. Baza de date contine inregistrari cu campurile: ``nume_produs`` si ``cantitati_produs``. Primul reprezinta numele produsului, iar al doilea memoreaza cantitatiile din acest produs (separate prin spatiu) stocate in fiecare magazin din oras e.g.

```
Ciocolata, 2.5 14.1 1 278
Suc natural, 16 12 11.6 100
Iaurt, 2.5 4.1 12 4.7
```

Folositi un tablou unidimensional alocat dinamic pentru a citi si memora datele produselor din fisier. Folositi functia qsort pentru a ordona fiecare subtablou de cantitati. Pe parcursul rezolvarii se va folosi doar alocare dinamica.

0 comments on commit 580b41f

Please sign in to comment.