Programarea Calculatoarelor, seria CC

Laborator 4

Tablouri

În acest laborator veţi învăţa să:



Problema 1 - problemă rezolvată.

Program care citește un număr N și N note (între 1 și 10) și afișează procentul notelor sub 5.

Rezolvare:

Să incepem prin identificarea pașilor ce îi avem de parcurs pentru a rezolva problemei:

Fie V vectorul în care sunt stocate notele. Pseudocodul care calculează procentul de note sub 5 va fi:

n5 = 0
pentru i de la 1 la N cu pasul 1
     dacă (V[i] < 5) atunci
          n5 = n5 + 1
procent = n5 * 100 / N
afișează procent

Programul C care implementează algoritmul descris mai sus va fi:

 1 #include <stdio.h>
 2
 3 int main(void)
 4 {
 5     int N, v[100], i, n5;
 6     float procent;
 7
 8     printf("N = ");     /* afisam un mesaj pentru utilizator */
 9     scanf("%d", &N);    /* citim numarul de note ce vor fi introduse de la
10                       tastatura */
11     for (i = 0; i < N; i++) {
12        printf("v[%d] = ", i);
13        scanf("%d", &v[i]);     /* citim a i-a nota */  
14     }
15
16     /* in n5 vom numara cate note mai mici ca 5 au fost citite */
17     n5 = 0; /* initializam n5 */
18     for (i = 0; i < N; i++)     /* parcurgem vectorul de note */
19        if (v[i] < 5)           /* si daca gasim o nota mai mica decat 5 */
20           n5++;               /* vom incrementa n5 */
21
22     /* aplicam formula de calculare a procentului: cum n5, 100 si N sunt de tip
23      * int, daca nu am converti una din ele la float, s-ar face impartire
24      * intreaga */ 
25     procent = (float)n5 * 100 / N;
26
27     printf("procent = %.3f\n", procent);
28
29     return 0;
30 }


Problema 2.

Program care citește un șir de numere (pozitive și negative) și afișează media aritmetică a numerelor pozitive și media aritmetică a numerelor negative. (Atenție la situația când toate numerele au același semn!).

Exemplu:

Intrare Ieşire
5
-2 3 5 -7 11
MP = 6.33
MN = -4.5
5
2 3 5 7 11
MP = 5.6
MN = nu se poate calcula

Problema 3.

Program pentru determinarea valorii minime dintre toate valorile maxime pe liniile unei matrice de numere reale (punct in "șa").

Exemplu:

Intrare Ieşire
4 4
2 17 1 4
9 2 11 3
1 8 5 6
8 9 3 4
8

Problema 4.

Se citesc 2 matrice A (m x n) și B (p x q) de la tastatură. Afișați matricea C = A * B sau mesajul "nu se poate efectua A * B".

Ci, j = ∑ Ai, k * Bk, j, 1 ≤ i ≤ m, 1 ≤ k ≤ n = p, 1 ≤ j ≤ q

Exemplu:

Intrare Ieşire
2 1
1
2

1 3
1 2 3
2 3
1 2 3
2 4 6

Problema 5.

Program pentru interclasarea a doi vectori ordonați într-un singur vector ordonat.

Hint: Veți parcurge cei 2 vectori in paralel și veți construi un nou vector, la care veți adăuga, pe rând, câte un element din primul sau din al doilea vector (în funcție de care dintre ele este mai mic).

Exemplu:

Intrare Ieşire
5 6
2 4 9 12 14
1 3 5 8 9 11
1 2 3 4 5 8 9 9 11 12 14

Problema 6.

Se citește o matrice pătratică A de la tastatură. Afișati toate elementele de sub diagonala secundară, pe coloane.

Exemplu:

Intrare Ieşire
4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
14 11 15 8 12 16

Problema 7.

Program pentru afișarea celei mai lungi secvențe de elemente consecutive ordonate crescător dintr-un vector dat.

Exemplu:

Intrare Ieşire
9
5 3 6 2 4 6 8 4 1
2 4 6 8

Problema 8.

Program pentru afișarea secvenței de elemente consecutive de sumă maximă dintr-un vector.

Exemplu:

Intrare Ieşire
12
5 0 -1 -4 2 8 3 -1 2 -5 -8 4
2 8 3 -1 2

Probleme suplimentare