Documente Academic
Documente Profesional
Documente Cultură
Facultatea Calculatoare,Informatică și
Microelectronică
RAPORT
Lucrarea de laborator nr.4
la Programarea Calculatoarelor
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;
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;
}
Bibliografie:
1. INTRODUCERE IN PROGRAMAREA CALCULATOARELOR ,UTM MD 2022