Sunteți pe pagina 1din 20

Universitatea Tehnică a Moldovei

Catedra Automatică și Tehnologii Informaționale

Disciplina Structuri de date si algoritmi

Varianta 7

Raport

Tema: Prelucrarea tablourilor bidimensionale

A realizat student grupa TI-

A verificat Moțpan Serghei

Chisinău 2018
Cuprin

2
s

1. Scopul și obiectivele lucrării....................................................................................................3


2. Sarcina......................................................................................................................................4
3. Schema bloc.............................................................................................................................5
4. Realizarea.................................................................................................................................7
Concluzii..........................................................................................................................................8
Bibliografie......................................................................................................................................9
Anexa A.........................................................................................................................................10
Anexa B.........................................................................................................................................11

3
1. Scopul și obiectivele lucrării

a. Familiarizarea cu principiile prelucrării elementelor tablourilor unidimensionale cu


ajutorul pointerilor.
b. Algoritmizarea şi însuşirea procedeelor stereotipe de declarare, introducere, afişare şi
formare prin parcurgere şi calcule ale valorilor elementelor tablourilor unidimensionale
cu ajutorul pointerilor.
c.

4
2. Sarcina

Să se citească de la tastatură o matrice pătratică A.

Să se calculeze suma elementelor negative și produsul elementelor pozitive de sub diagonala


principală și de pe diagonala secundară, inclusiv de pe cele două diagonale.

5
3. Schema bloc

START

nCol=3

a=introducereMatrice(nCol);

afisare(a,nCol);

prelucrare(a,nCol);

prelucrare2(a,nCol);

prelucrare3(a,nCol);

prelucrare4(a,nCol);

prelucrare4(a,nCol);

eliberare(a,nCol);

STOP

6
Figura 1 Schema bloc pentru functia main

7
Figura 2 Schema bloc pentru functia prelucrare

8
4. Realizarea

Programul dat are ca scop să citescă o matrice pătratică de la tastatură. La startarea aplicației
utilizatorul trebuie să introduce de la tastatură valorile, și după se va aloca un tablou.

a=(int**) malloc (nCol*sizeof(int*));


for(i=0; i<nCol; i++)
a[i]=(int*) calloc (nCol,sizeof(int));

Se citesc valorile matricei de la tastatură și se parcurge matricea:

for(i=0; i<nCol; i++)

for(j=0;j<nCol;j++)

printf("Introduceti %d %d:",i+1,j+1);

scanf("%d",*(a+i)+j);

Să se afișeze suma elementelor negative și produsul elementelor pozitive de sub diagonala


secundară:

void prelucrare(int **a, int nCol)

int i,j,sn=0,pp=1;

for(i=1;i<nCol;i++)

for(j=nCol-i;j<nCol;j++)

if((*(*(a+i)+j))<0) sn=sn+(*(*(a+i)+j));

if((*(*(a+i)+j))>0) pp=pp*(*(*(a+i)+j));

}
printf("\n");
}

printf("Suma elementelor negative de sub diagonala secundara este %d",sn);

9
printf("\n Produsul elementelor pozitive de sub diagonala secundara este %d",pp);

Să se afișeze suma elementelor negative și produsul elementelor pozitive de sub diagonala


principală:

void prelucrare2(int **a, int nCol)

int i,j,sn=0,pp=1;

for(i=0;i<nCol;i++)

for(j=0;j<i;j++)

if((*(*(a+i)+j))<0) sn=sn+(*(*(a+i)+j));

if((*(*(a+i)+j))>0) pp=pp*(*(*(a+i)+j));

printf("\n");

printf("Suma elementelor negative de sub diagonala principala este %d",sn);

printf("\n Produsul elementelor pozitive de sub diagonala principala este


%d",pp);

Să se afișeze suma elementelor negative și produsul elementelor pozitive de pe diagonala


principală:

void prelucrare3(int **a, int nCol)

int i,j,sn=0,pp=1;

for(i=0;i<nCol;i++)

for(j=0;j<nCol;j++)

if(i==j)

10
{

if((*(*(a+i)+j))<0) sn=sn+(*(*(a+i)+j));

if((*(*(a+i)+j))>0) pp=pp*(*(*(a+i)+j));

printf("\n");

printf("Suma elementelor negative de pe diagonala principala este %d",sn);

printf("\n Produsul elementelor pozitive de pe diagonala principala este %d


\n",pp);

Să se afișeze suma elementelor negative și produsul elementelor pozitive de pe diagonala


secundară:

void prelucrare4(int **a, int nCol)

int i,j,sn=0,pp=1;

for(i=0,j=nCol-1;i<nCol;i++,j--)

if((*(*(a+i)+j))<0) sn=sn+(*(*(a+i)+j));

if((*(*(a+i)+j))>0) pp=pp*(*(*(a+i)+j));

printf("\nSuma elementelor negative de pe diagonala secundara este %d",sn);

printf("\n Produsul elementelor pozitive de pe diagonala secundara este %d",pp);

11
Concluzii

Lucrarea dată a avut ca scop să ne facă cunoscuți cu tabele bidimensionale, și parcurgerea


lor cu ajutorul pointerilor.

12
Bibliografie

1. The GNU C Reference Manual. [Interactiv] https://www.gnu.org/software/gnu-c-


manual/gnu-c-manual.html.
2. The C Library Reference Guide. [Interactiv] https://www-
s.acm.illinois.edu/webmonkeys/book/c_guide/.

[ CITATION The1 \l 1033 ]

Anexa A

Figura 3 Rezultatul executiei programului cu valoarile matricei [1-9]

13
Anexa B
#include <stdio.h>
#include <stdlib.h>

int ** introducereMatrice(int nCol)


{
int i,j,**a;
a=(int**) malloc (nCol*sizeof(int*));
for(i=0; i<nCol; i++)
a[i]=(int*) calloc (nCol,sizeof(int));

for(i=0; i<nCol; i++)


{
for(j=0;j<nCol;j++)
{
printf("Introduceti %d %d:",i+1,j+1);
scanf("%d",*(a+i)+j);
}
}
return a;
}

void eliberare(int **a, int nCol)


{
int i;
for(i=0; i<nCol; i++)
free(a[i][i]);
free(a);
}

void afisare(int **a, int nCol)


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

void prelucrare(int **a, int nCol)


{
int i,j,sn=0,pp=1;
for(i=1;i<nCol;i++)
{
for(j=nCol-i;j<nCol;j++)
{
if((*(*(a+i)+j))<0) sn=sn+(*(*(a+i)+j));
if((*(*(a+i)+j))>0) pp=pp*(*(*(a+i)+j));
}
printf("\n");
}

printf("Suma elementelor negative de sub diagonala secundara este %d",sn);


printf("\n Produsul elementelor pozitive de sub diagonala secundara este %d",pp);
}

void prelucrare2(int **a, int nCol)


{
int i,j,sn=0,pp=1;
for(i=0;i<nCol;i++)
{
for(j=0;j<i;j++)
{
if((*(*(a+i)+j))<0) sn=sn+(*(*(a+i)+j));
if((*(*(a+i)+j))>0) pp=pp*(*(*(a+i)+j));
}
printf("\n");
}

15
printf("Suma elementelor negative de sub diagonala principala este %d",sn);
printf("\n Produsul elementelor pozitive de sub diagonala principala este
%d",pp);
}

void prelucrare3(int **a, int nCol)


{
int i,j,sn=0,pp=1;
for(i=0;i<nCol;i++)
{
for(j=0;j<nCol;j++)
{
if(i==j)
{
if((*(*(a+i)+j))<0) sn=sn+(*(*(a+i)+j));
if((*(*(a+i)+j))>0) pp=pp*(*(*(a+i)+j));
}
}
printf("\n");
}

printf("Suma elementelor negative de pe diagonala principala este %d",sn);


printf("\n Produsul elementelor pozitive de pe diagonala principala este %d
\n",pp);
}

void prelucrare4(int **a, int nCol)


{
int i,j,sn=0,pp=1;
for(i=0,j=nCol-1;i<nCol;i++,j--)
{
if((*(*(a+i)+j))<0) sn=sn+(*(*(a+i)+j));
if((*(*(a+i)+j))>0) pp=pp*(*(*(a+i)+j));

16
printf("\nSuma elementelor negative de pe diagonala secundara este %d",sn);
printf("\n Produsul elementelor pozitive de pe diagonala secundara este %d",pp);
}

int main()
{
int **a;
int nCol,i,j;
printf("Dimensiunea matricii:");
scanf("%d",&nCol);
a=introducereMatrice(nCol);
printf("\n");
afisare(a,nCol);
prelucrare(a,nCol);
prelucrare2(a,nCol);
prelucrare3(a,nCol);
prelucrare4(a,nCol);
eliberare(a,nCol);
return 0;
}

17
Ex1
void sortbule ( float *a, unsigned n )
{
unsigned i, m = n–1; float temp;
int ind = 1;
while ( ind >= 0)
{
ind = -1;
for(i=0 ;i<m;i++)
if (*(a+i) >*(a+i+1))
{
temp=*(a+i);
*(a+i)=*(a+i+1) ;
*(a+i+1)=temp;
ind=i;
}
m=ind ;
}
}

Ex2.Pointeri la functie:
#include <stdio.h>
Void afis1()
{
Printf(“TI-173”);
}
Void afis2()
{
Printf(“UTM”);
18
}
Void afis3()
{
Printf(“2018”);
}
Int main()
Int I;
Void (*p[3]) (void);
P[0]=&afis1;
P[1]=&afis2;
P[2]=&afis3;

For(i=0;i<3;i++)
(*p[i]) ();

Return 0;
}

Ex3.

# include “stdio.h”
char *strstr (char *S 1, char *S 2)
{ unsigned i ;
char *SA = S 1, *SB = S 2, *SC = S 2 ;
while ( *SB ! = ‘\0’ ) {
i=1;
while ( *SA ! = ‘\0’)
if ( *SA == *SB) {
SA ++; SB++;}
else {
i = 0 ; break ; }
if (i == 1)
return SC ;

19
SA = S 1 ; SC++ ; SB = SC ;
}
return NULL ; }

20

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

  • IoT Laborator NR 2
    IoT Laborator NR 2
    Document10 pagini
    IoT Laborator NR 2
    crismaruion
    Încă nu există evaluări
  • Arhitectura Calculatoarelor Curs UTM
    Arhitectura Calculatoarelor Curs UTM
    Document47 pagini
    Arhitectura Calculatoarelor Curs UTM
    Mihai Croitoru
    Încă nu există evaluări
  • Raport CDE Lab.2
    Raport CDE Lab.2
    Document7 pagini
    Raport CDE Lab.2
    crismaruion
    100% (1)
  • IoT2 Raport
    IoT2 Raport
    Document10 pagini
    IoT2 Raport
    crismaruion
    Încă nu există evaluări
  • Lab 7 Sda
    Lab 7 Sda
    Document12 pagini
    Lab 7 Sda
    crismaruion
    Încă nu există evaluări
  • Lab 6 Sda
    Lab 6 Sda
    Document16 pagini
    Lab 6 Sda
    crismaruion
    Încă nu există evaluări
  • Raport 5 CDE
    Raport 5 CDE
    Document7 pagini
    Raport 5 CDE
    crismaruion
    Încă nu există evaluări
  • Lab 4 Sda
    Lab 4 Sda
    Document14 pagini
    Lab 4 Sda
    crismaruion
    Încă nu există evaluări
  • IoT2 Raport
    IoT2 Raport
    Document10 pagini
    IoT2 Raport
    crismaruion
    Încă nu există evaluări
  • Lab 4 Apa
    Lab 4 Apa
    Document21 pagini
    Lab 4 Apa
    crismaruion
    Încă nu există evaluări
  • Lab 5 Sda
    Lab 5 Sda
    Document12 pagini
    Lab 5 Sda
    crismaruion
    Încă nu există evaluări
  • Lab 3 Sda
    Lab 3 Sda
    Document14 pagini
    Lab 3 Sda
    crismaruion
    Încă nu există evaluări
  • Laboratorul 2 PPE
    Laboratorul 2 PPE
    Document4 pagini
    Laboratorul 2 PPE
    crismaruion
    Încă nu există evaluări
  • Raport4 Lab4 AC
    Raport4 Lab4 AC
    Document3 pagini
    Raport4 Lab4 AC
    crismaruion
    Încă nu există evaluări
  • Laborator 2 APA
    Laborator 2 APA
    Document20 pagini
    Laborator 2 APA
    crismaruion
    Încă nu există evaluări
  • Laborator 1 APA
    Laborator 1 APA
    Document14 pagini
    Laborator 1 APA
    crismaruion
    Încă nu există evaluări
  • Examen PPe
    Examen PPe
    Document11 pagini
    Examen PPe
    crismaruion
    100% (2)
  • Raport3 CDE UTM
    Raport3 CDE UTM
    Document2 pagini
    Raport3 CDE UTM
    crismaruion
    Încă nu există evaluări
  • Proiect AMSI
    Proiect AMSI
    Document38 pagini
    Proiect AMSI
    crismaruion
    0% (1)