Sunteți pe pagina 1din 11

Ministerul Educației și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei

Facultatea Calculatoare,Informatică și
Microelectronică

RAPORT
Lucrarea de laborator nr.4
la Programarea Calculatoarelor

A efectuat studentul grupei CR-221 : Iabanji Octavian

A verificat: Mititelu Vitalie

Chișinău 2022
Lucrarea de Laborator nr. 4
Tema: Prelucrarea tablourilor bidimensionale (matricelor) în limbajul C
Scopul: Studierea posibilităților și mijloacelor limbajului C pentru programarea algoritmilor de prelucrare a
tablourilor bidimensionale.

Sarcina : Scrieți un program care citește de la tastatură numărul n>1 de rânduri și numărul m>1 de coloane
ale tabloului bidimensional (mnatricei), apoi citește de la tastatură aceste n X m elemente ale tabloului,
efectuează calculele indicate în variantă și afișează pe ecran rezultatul:

Varianta 11. Să se determine maximul dintre sumele elementelor negative de pe diagonala principală și cea
secundară.

Mersul lucrarii
Noţiuni din teorie şi metodele folosite:

Un tablou este o colecție de date de același tip, stocat în memorie într-o zonă continuă. Fiecare dată din
colecție, numită element al tabloului poate fi folosită ca variabilă oarecare de tipul precizat, fiind
identificat printr-o operație numită indexare.
Un tablou Bidimensional reprezinta o succesiune de locatii de memorie recunoscute prin acelasi
identificator si prin pozitia fiecareia in cadrul sirului. Pozitia este data printr-o indicatie de două numere
pozitive (indecsi), care reprezinta cele doua dimensiuni (linie si coloana).Tabloul are un numar bine
determinat de elemente si se identifica printr-un singur nume.
 Valorile atribuite elementelor tabloului trebuie sa fie de acelasi tip.
 Tablourile bidimensionale se numesc MATRICE.Citirea elementelor unui tablou nu este posibila decat
prin citirea fiecarui element. De aceea, la fel ca si in cazul vectorilor, operatia de citire a matricelor
impune folosirea a doua secvente ciclice suprapuse. Acestea corespund indicelor liniei (i), respectiv
coloanei (j).

Operatii posibile

 Declararea tabloului bidimensional pentru alocarea spatiului de memorie necesar stocarii elementelor;
 Memorarea si afisarea elementelor unui tablou in vederea efectuarii viitoarelor operatii, precum si a
vizualizarii rezultatelor obtinute;
 Parcurgerea si cautarea elementelor memorate in tablou;
 Prelucrarea elementelor tabloului (sume, medii, cautari, maxime, verificari, etc.);
 Stergerea sau adaugarea unui element din tablou;

Structura generală a unui program in limbajul C :


- directivele preprocesorului (după necisitate)

- declarațiile variabelelor globale și a funcțiilor programului (după necesitate)


- cudul functiei principale main( )
- codurile altor funcții programului (după necesitate)

Descrierea variabilelor:
a) date de intrare:
rand, col - variabile simple de tip integer , introdusa de la tastatura care deteremina numarul de randuri si
de coloane a matricei A.
b) date de ieşire:
principal, secundar – variabile simple de tip integer ,folosite pentru a stoca si afisa sumele de pe diagonala
principala si secundara.
c) variabile de operare:
i,j - variabile simple de tip integer , folosite pentru parcurgerea valorilor de pe randuri si coloane.
Schema logică a algoritmului:
Codul (textul) programului în limbajul C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
int A[40][40];
int rand ,col,i,j,principal,secundar;
//aici am introdus numarul de randuri si coloane
printf("introdu numarul de randuri : ");
scanf("%d",&rand);
printf("introdu numarul de coloane : ");
scanf("%d",&col);
//aici am citit numarul de randuri si coloane
for(i=0;i<rand;i++)
for(j=0;j<col;j++)
{
printf("A[%d][%d]=",i,j);
scanf("%d",&A[i][j]);
}
//aici am afisat elementele matricei
printf("elementele matricei sunt :\n");
for(i=0;i<rand;i++){
for(j=0;j<col;j++){
printf("(%d)\t",A[i][j]);
}
printf("\n");
}
//aici am aflat suma elementelor negative de pe diagona principala a matricei
principal=0;
for(i=0;i<rand;i++){
for(j=0;j<col;j++){
if(i==j)
if (A[i][j]<0)
principal += A[i][j];
}}
//aici am aflat suma elementelor negative de pe diagona secundara a matricei
secundar=0;
for(i=0;i<rand;i++){
for(j=0;j<col;j++){
if((i+j)==(col-1))
if (A[i][j]<0)
secundar += A[i][j];
}}

//aici am aflat afisat suma elementelor negative de pe diagona secundara si principala a matricei
printf("suma elementelor negative de pe diagonala principala sunt : %d \n",principal);
printf("suma elementelor negative de pe diagonala secundara sunt : %d \n",secundar);
printf("\n");
//aici am aflat calculat si afisat diagonala a carei suma e maximala
if((secundar==0) && (principal==0))
{
printf("nici una din diagonale nu detine elemente negative \n");
}
else if (secundar<principal)
{
printf("suma maxima a elementelor negative se afla pe diagonala principala \n");
}
else
{
printf("suma maxima a elementelor negative se afla pe diagonala secundara \n");
}
return 0;
}

Rezultatele testării și funcţionării programului


(screenshot-uri):
z
Analiza rezultatelor și concluzii:
1. Au fost obţinute deprinderi de elaborare, compilare, rulare și testare a unui program
simplu în limbajul de programare C.
2. Verificarea rezultatelor obţinute confirmă că programul elaborat lucrează corect.
3. Sa studiat tehnica şi metoda de utilizare a instrucţiunilor de control a condiţiei şi a
instrucţiunilor ciclice în limbajul C pentru parcurgerea tablourilor biidimensionale si
calcularea sumei valorilor negative de pe diagonala principala si secundara.

Bibliografie:
1. INTRODUCERE IN PROGRAMAREA CALCULATOARELOR ,UTM MD 2022

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