Sunteți pe pagina 1din 8

Ministerul Educaţiei, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei

Departamentul Informatică și Ingineria Sistemelor

RAPORT
Lucrare de laborator nr.4
la Programarea Calculatoarelor

A efectuat:
st. gr. CR-181 V. Raileanu

A verificat:
dr., conf. univ. M. Kulev

Chişinău, 2018

0
Lucrare de laborator nr.4

Tema: Prelucrarea tablourilor bidimensionale

Scopul lucrării: obtinerea deprinderilor practice de lucru cu tablouri bidimensionale, cunoasterea


particularitatilor de declarare, de introducere si de prelucrare a tabloului bidimensional.

Condiţia problemei (sarcini de lucru) [1]: Produsul elementelor pozitive din fiecare rind si
elementul maximal si minimal de pe diagonala principala al tabloului.

Notiuni studiate[2]:

Tabloul bidemsional reprezinta o variabila compusa, care reprezinta un loc continuu in memoria
calculatorului destinat pentru stocarea valorilor sau elementelor de acelasi tip.
Tabloul unidensional reprezinta o structura de date compusa.
Structura de date reprezinta un set de date tratat ca un lucru care contine mai multe lucruri.

Analiza datelor și identificarea variabilelor:

a) date de intrare: linii, coloane, A[linii][coloane] – numarul de coloane, randuri ale tabloului
unidimensional si insasi tabloul, toate de tip integer (numerele intregi)

b) date de ieşire: min,max – de tip integer (numere intregi)

c)date intermediare
i, j – de tip integer pentru cicluri
q – determinam minimul dintre linii si coloane
contor – determinam linia tabloului parcursa

Schema logică a algoritmului:

Start

int q,linii,coloane,i,j,prod=1,contor,max,min;

"Dati numarul de rinduri ale tabloului bidimensional: "

"%i", &linii

1
1

Dati numarul de coloane ale tabloului bidimensional: "

"%i", & coloane

int a[linii][coloane];

int i = 0; i < linii; i++

int m = 0; j < coloane; j++

"intoducem elementul de pe pozitia a[%d][%d]= ",i,j

"%i", &a[i][j]

"tabloul introdus: \n"

i=0;i<linii;i++ 2

j=0;j<coloane;j++

" %i", a[i][j]

"\n"

2
2

contor=0;

i=0;i<linii;i++

prod=1;

j=0;j<coloane;j++

contor++;

nu
a[i][j]>0 produsul de pe linia %i
= ", contor

da
prod=prod*a[i][j]; "%i\n",prod

nu
linii<coloa
ne
da
q=linii q=coloane

max=a[0][0];

min=a[0][0];

"elementele de pe diagonala
principala: \n"

3
3

i=0;i<q;i++

"el max de pe diag


principala= %i \n", max
nu
a[i][i]>max
"el min de pe diag
da principala= %i \n\n",
min
max=a[i][i];

Stoparea
ecranului
a[i][i]<min nu
da
min=a[i][i]; Stop

" %i \n", a[i][i]

Codul (textul) programului in limbajul C:

#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
int q,linii,coloane,i,j,prod=1,contor,max,min;

printf("Dati numarul de rinduri ale tabloului bidimensional: ");


scanf("%i",&linii);
printf("Dati numarul de coloane ale tabloului bidimensional: ");
scanf("%i",&coloane);
printf("\n");
int a[linii][coloane];
for(i=0;i<linii;i++)
{
for(j=0;j<coloane;j++)
{
printf("intoducem elementul de pe pozitia a[%d][%d]= ",i,j);
scanf("%i", &a[i][j]);
}
}

printf("tabloul introdus: \n");


for(i=0;i<linii;i++)
4
{
for(j=0;j<coloane;j++)
{
printf(" %i", a[i][j]);
}
printf("\n");
}
contor=0;
for(i=0;i<linii;i++)
{
prod=1;
for(j=0;j<coloane;j++)
{
if(a[i][j]>0)
prod=prod*a[i][j];
}
contor++;
printf("produsul de pe linia %i = ", contor);
printf("%i\n",prod);
}
if(linii<coloane)
{q=linii;}
else
{q=coloane;}

max=a[0][0];
min=a[0][0];
printf("elementele de pe diagonala principala: \n" );
for(i=0;i<q;i++)
{
if(a[i][i]>max)
max=a[i][i];
if(a[i][i]<min)
min=a[i][i];

printf(" %i \n", a[i][i]);

printf("el max de pe diag principala= %i \n", max);


printf("el min de pe diag principala= %i \n\n", min);
}

5
Rezultatele rulării și testării programului:

6
Analiza rezultatelor și concluzii:
1. Au fost obţinute deprinderi de elaborare, compilare, rulare și testare a tablourilor
bidimensionale în limbajul de programare C.
2. Verificarea și validarea rezultatelor obţinute confirmă că programul elaborat lucrează corect.
3. Algoritmi ramificati si ciclici pot fi folositi pentru prelucrarea tabloului bidimensional.
4. Avantajul programului elaborat este simplicitatea implementării algoritmului ramificat.
5. Programul elaborat nu verifică datele de intrare, ce reprezintă un dezavantaj al algoritmului.
Spre exemplu la intruducerea unei litere in consola – programul va da eroare.
6. Programul elaborat poate fi dezvoltat ulterior prin adăugarea operațiilor de verificare a datelor
de intrare (daca datele introduse sunt numere intregi).
.
Bibliografie:
1. Carcea L., Vlas S., Bobicev V. Informatica: Sarcini pentru lucrări de laborator. Chișinău: UTM,
2005. - 19 p.
2. Conspectul prelegerilor al cursului Programarea Calculatoarelor pentru studenții gr. AI-181, AI-
182, CR-181, C-182 (lector: dr., conf. univ. M. Kulev). Chișinău, UTM, FCIM, 2018.

S-ar putea să vă placă și