0% found this document useful (0 votes)
49 views9 pages

Raport: Despre Lucrarea de Laborator Nr. 1

The document reports on a laboratory work to calculate the sum of elements above the secondary diagonal of a random matrix. The student implemented the task in C using global variables, addresses, and dynamic variables with pointers. The conclusion states that the laboratory work helped develop programming skills for matrices by learning about dynamic variables, addresses, and global variables both theoretically and practically.

Uploaded by

Maxim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views9 pages

Raport: Despre Lucrarea de Laborator Nr. 1

The document reports on a laboratory work to calculate the sum of elements above the secondary diagonal of a random matrix. The student implemented the task in C using global variables, addresses, and dynamic variables with pointers. The conclusion states that the laboratory work helped develop programming skills for matrices by learning about dynamic variables, addresses, and global variables both theoretically and practically.

Uploaded by

Maxim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Universitatea Tehnică a Moldovei

Facultatea Calculatoare Informatică și Microelectronică


Specialitatea Securitate Informațională

RAPORT
despre lucrarea de laborator nr. 1

la Structuri de Date și Algoritmi

A îndeplinit: st.gr.SI-181 Marcoci Maxim

A controlat: Victoria Lazu


Sarcina: Crează un program care va calcula suma elementelor ce se află deasupra
diagonalei secundare a unei matrici cu elemente random.
Programul în C:
Prin variabile globale
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int matrice[50][50];
int a[200];
int i, j, m, n, s;

int random_num (int min, int max)


{ return rand()%(max-min+1)+min; }

void atr_valori_matrix (int m, int n)


{
srand((unsigned int)time(NULL));
for(i=0; i<m; i++)
for(j=0; j<n; j++)
matrice[i][j]=random_num(0,99);
}

void afis_matrice (int m, int n)


{
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
printf(" %d ", matrice[i][j]);
printf("\n");
}
}

void suma_secundara()
{
int i,j;
//validare a matricei (trebuie sa fie patratica)
if(n!=m) printf("\n Matricea nu este patratica !");
else
{
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if((i+j)<(m-1)) s+=matrice[i][j];
//suma elementelor de deasupra diagonalei secundara
printf("\n Suma este: %d", s);
}
}

int main()
{
printf("Dati nr. de randuri ale matricei < 50: \t");
scanf("%d",&m);
printf("Dati nr. de coloane ale matricei < 50: \t");
scanf("%d",&n);
atr_valori_matrix(m, n);
printf("\n\n");

afis_matrice(m, n);

printf("\n\n");

suma_secundara();

getch();
return 0;
}

Prin adresă:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int random_num (int min, int max)


{ return rand()%(max-min+1)+min; }

void atr_valori_matrix (int m, int n)


{ int matrice[50][50];
int i,j;
srand((unsigned int)time(NULL));
for(i=0; i<m; i++)
for(j=0; j<n; j++)
matrice[i][j]=random_num(0,99);
}

void afis_matrice (int m, int n)


{ int matrice[50][50];
int i,j;
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
printf(" %d ", matrice[i][j]);
printf("\n");
}
}

void suma_secundara(int m, int n)


{
int matrice[50][50];
int i,j,s;
//validare a matricei (trebuie sa fie patratica)
if(n!=m) printf("\n Matricea nu este patratica !");
else
{
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if((i+j)<(n-1)) s+=matrice[i][j];
//suma elementelor de deasupra diagonalei secundara
printf("\n Suma este: %d", s);
}
}

int main()
{ int m,n;
printf("Dati nr. de randuri ale matricei < 50: \t");
scanf("%d",&m);
printf("Dati nr. de coloane ale matricei < 50: \t");
scanf("%d",&n);
atr_valori_matrix(m, n);

printf("\n\n");

afis_matrice(m, n);

printf("\n\n");

suma_secundara(m, n);

return 0;
}
Variabile dinamice(pointeri):
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int random_num (int min, int max)


{ return rand()%(max-min+1)+min; }

int **atr_valori_matrix (int m, int n)


{ int **matrice = (int**) malloc( m * sizeof(int*) ), i, j;
//Alocare de memorie
for(i=0; i<m; i++)
{
*(matrice+i) = (int*) malloc( n * sizeof(int) );
//Completarea matricii
for(j=0; j<n; j++)
*(*(matrice+i)+j)=random_num(0,90);
}
//Returnarea valorii
return matrice;
}

void afis_matrice (int ** matrice, int m, int n)


{ int i, j;
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
printf(" %d ", *(*(matrice+i)+j));
printf("\n");
}
}

int *suma_secundara (int** matrice, int m, int n)


{
int *s;
int i, j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if((i+j)<(m-1)) *s+=*(matrice[i][j]);

int main()
{ srand((unsigned int)time(NULL));
int i, m, n;
printf("Dati nr. de randuri ale matricei < 50: \t");
scanf("%i",&m);
printf("Dati nr. de coloane ale matricei < 50: \t");
scanf("%i",&n);

int **matrice = atr_valori_matrix(m, n);

printf("\n\n");

afis_matrice(matrice, m, n);
printf("\n\n");
suma_secundara (matrice, m, n);
return 0;
}

Concluzie: În această lucrare de laborator am aflat despre variabile dinamice, adrese și variabile
globale, atît teoretic cît și practic, fiind utilizate în program, suma calculată prin acest program mi-a
dezvoltat abilitatățile de programare și anume ce ține de matrice.

You might also like