Sunteți pe pagina 1din 20

Universitatea Tehnică a Moldovei

Catedra Automatică și Tehnologii Informaționale

Disciplina Programarea Calculatoarelor

Varianta 19

Raport

Tema: “Analiza eficienţei prelucrării structurilor de date cu pointeri ”

A realizat student grupa TI-173 Rosca Florin

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:
1. De studiat şi însuşit materialul teoretic din lucrarea dată prin însușirea noțiunilor și lansarea
exerciţiilor la execuţie pentru analiza şi evidenţierea esenţialului prelucrării structurilor de date cu
pointeri în elaborarea modelelor soluţiei prin explicaţii, argumentări şi organigrame.
2. În partea practică, la prima lucrare, de organizat un program din trei exemple, propuse de profesor,
analizând specificul implementării pointerilor prin simulare numerică și rezultatele obținute.
3. În partea practică, la a doua lucrare, de organizat un program să se recapituleze materialul teoretic și
varianta din lucrarea de lab. 5 (PC), din semestrul I, şi să se analizeze algoritmii şi programele cu şi
fără pointeri (declarări şi parcurgeri cu pointeri). Pentru aprofundarea înţelegerii să se dezvolte
algoritmii şi programele cu pointeri pentru condiţiile problemelor şi să se elaboreze scenariile
succinte de soluţionare prin pointeri cu calculele de verificare şi explicaţii. Rularea programelor în
limbajul C cu afişarea tuturor variabilor de intrare, intermediare şi finale.
4. În raport să fie expuse toate programele şi calculele efectuate. Să se analizeze tehnica programării
eficiente cu pointeri în baza exerciţiilor şi variantelor problemelor efectuate pentru diverse situaţii cu
argumentări.

4
2. Sarcina

Fiecare temă conţine două probleme care vor fi rezolvare cu mijloacele limbajului
C (diferite modele de date şi obiecte). Temele se iau în conformitate compartimentele
propuse.
Lucrarea se consideră efecutată după ce studenţii demonstrează profesorului
funcţionarea corectă a programelor la calculator şi apoi prezintă darea de seamă cu
analiza rezultatelor. Darea de seamă include: foaia de titlu şi pentru fiecare lucrare să
se descrie algoritmul de rezolvare a problemei, listingul programului, dotat cu
comentariile de rigoare, Datele de intrare şi rezultatele să fie folosite în simularea
numerică şi să fie analizate în comparaţie cu rezultatele obţinute, concluzia şi
bibliografia studiată.

5
6
3. Schema bloc

Figura 1 Schema bloc pentru functia main

7
Figura 2 Schema bloc pentru functia printmat:

8
Figura 3 Schema bloc pentru functia TSuperior:

9
10
Figura 3 Schema bloc pentru functia TInferior:

11
4. Realizarea

Programul dat are ca scop să citescă de la tastatura numarul de linii si coloane apoi trebue
de introdus la fel de la tastatura elementele matricei.Iar ca rezultat el afiseaza matricea ,triunghiul
superior ,triunghiul inferior din matrice si calculeaza suma elementelor ambelor triunghiuri. La
efectuarea acestui program eu am folosit 3 functii(fig.2,3,4 din Anexa B)in care am folosit mai
multe posibilitati oferite de pointeri.Unele din ele fiind specificarea dimensiunii prin dubla
pointare pentru a crea un tablou bidimensional.Prima functie “printmat “ afiseaza matricea,a
doua “TSuprtior”afiseaza triunghiul superior,iar a treia” TInferior” afiseaza triunghiul inferior si
calculeasa si afiseaza suma elementelor triunghiurilor.Iar in functia principal main eu doar am
alocat memorie si am apelat functiile ,iar mai apoi am eliberat memoria prin folosirea “free”:

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

free(*(a+i));

free(a);

pentru a evita viitoarele posibile problem de incarcare a memorie ,ocupata de


functie si el nefiind eliberat nu mai poate fi folosin in caz de necesitate.

Rezultatele executiei programului sunt in Anexa A, iar codul sursa se gaseste in Anexa B.

12
Concluzii

Lucrarea dată a avut ca scop să ne facă cunoscuți cu pointerii care dupa parerea mea sunt
foarte eficienti der unicul minus pe care ii au pointeri este ca in caz de eroare in cod efectuata de
proramator este greu de gasiu unde ea a fost efectuata cee ace si ii face greu de a fi invatati cati
pentru a putea lucre efectiv cu ei este necesar de ai cunoaste la perfectie.Deci in conluzie in
timpul efectuarii acestui laborator am folosit in practica unele cunostinte de la curs privitor la
poineri insa pentru a putea lucre cu ei efectiv eu mai am inca de lucrat cu datele metodice pentru
ai intelege mai bine.

13
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 valoarea intervalului [1-101]

14
15
Anexa B

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int ** a; int i,j,rind,col,n,sum=0;

void printmat (int ** a, int rind, int col) {

int i,j;

for (i=0 ;i<rind;i++) {

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

printf ("\t%d", *(*(a+i)+j));

printf("\n");

int TSuprtior(int ** a, int rind, int col) {

printf("\nTriunghiul superior al matricei este\n");

for (i = 0; i < rind; i++) {

for (j = 0; j < col; j++) {

if (i < j) {

printf("\t%d ", *(*(a+i)+j));

sum = sum + *(*(a+i)+j);

if(j==col-1)

printf("\n");

}else{

printf("\t");

int TInferior(int ** a, int rind, int col) {

16
int r=0;

printf("\nTriunghiul inferior al matricei este\n");

for (i = 0; i < rind; i++) {

for (j = 0; j < col; j++) {

if (i > j) {

printf("\t%d",*(*(a+i)+j));

sum = sum + *(*(a+i)+j);

if(j==r){

printf("\n");

r++;}

int main () {

printf("nr. linii=");

scanf("%d",&rind);

printf("nr. col. =");

scanf("%d",&col);

if(col==rind) {

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

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

a[i] = (int*) calloc (col, sizeof(int));

printf("Introduceti elementele matricei:\n");

for (i=0;i<rind;i++){

for (j=0;j<col;j++){

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

printf("\nMatricea este:\n");

printmat (a,rind,col);

TSuprtior(a,rind,col);

TInferior(a,rind,col);
17
printf("\nSuma=%d",sum);

else{

printf("Nu este posibil\n");

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

free(*(a+i));

free(a);

return 0;

Anexa C.

Programul de cercetare a pointerilor:

#include <stdio.h>

#include <stdlib.h>

/* Definim doua functii cu doi parametri de tip int si care returneaza void. */

void o_functie(int a, int b){

printf("Eu sunt o functie cu doi parametri de tip int: %d si %d.\n", a, b);

void alta_functie(int c, int d){

printf("Eu sunt alta functie cu doi parametri de tip int: %d si %d.\n", c, d);

void func(void (*f)(int y, int z)){

f(10,15);

int inctmod (int *n, int m) {

return ++(*n) % m;

int main(void){
18
//Cercetarea pointerilor la functie

printf("1)Rezultat cercetarii pointerilor la functie:\n");

func(o_functie);

func(alta_functie);

//Cercetarea pointerilor in functir

int n = 10;

int m = 15;

printf("\n2)Rezultat cercetarii pointerilor in functie:\n");

inctmod(&n, m);

printf("n: %d\n",n);

//Cercetarea pointerilor la date

char *c;

char h='H';

printf("\n3)Rezultat cercetarii pointerilor la date:\n");

c=&h;

printf("Valoarea c: %c\n",*c);

printf("Adresa c: %p\n",c);

printf("\n");

printf("Valoarea h: %c\n",h);

printf("Adresa h: %p\n",&h);

//Cercetarii medodei de incrementare a ciclului(for) prin pointeri

printf("\n4)Rezultat cercetarii medodei de incrementare a ciclului (for) prin pointeri:\n");

printf("a)Cercetarea fara pointeri:\n");

int b[2][3] = {{ 1,2,3},{ 4,5,6}};

int i,j;

for(i=0;i<2;i++){

for(j=0;j<3;j++){

printf("%d ",b[i][j]);

printf("\n");

printf("b)Cercetarea cu pointeri:\n");

int w[2][3]= {{1,2,3},{ 4,5,6}};

int *p,q[2],t=0,a=3;

p=w[0];

for(p=w[0];p<w[0]+2*3;p++){

printf("%d ",(**w)++);

t++;
19
if(t==a){

printf("\n");

a=a+3;

return 0;

Anexa D.

Rezultatul Afisarii programului de cercetare a pointerilor:

20

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

  • Lab 1
    Lab 1
    Document12 pagini
    Lab 1
    RoscaFlorin
    Încă nu există evaluări
  • Lab2 P - Web.
    Lab2 P - Web.
    Document11 pagini
    Lab2 P - Web.
    RoscaFlorin
    Încă nu există evaluări
  • Lab 2
    Lab 2
    Document3 pagini
    Lab 2
    RoscaFlorin
    Încă nu există evaluări
  • LFA Lab - 2
    LFA Lab - 2
    Document15 pagini
    LFA Lab - 2
    RoscaFlorin
    100% (1)
  • MMC (Lab 1)
    MMC (Lab 1)
    Document12 pagini
    MMC (Lab 1)
    RoscaFlorin
    Încă nu există evaluări
  • CDE Lab 4 PDF
    CDE Lab 4 PDF
    Document7 pagini
    CDE Lab 4 PDF
    RoscaFlorin
    Încă nu există evaluări
  • LFA Lab - 1
    LFA Lab - 1
    Document10 pagini
    LFA Lab - 1
    RoscaFlorin
    100% (1)
  • Semeniuc Eric Lab2 CDE
    Semeniuc Eric Lab2 CDE
    Document8 pagini
    Semeniuc Eric Lab2 CDE
    Eric Semeniuc
    Încă nu există evaluări
  • CDE Lab 3
    CDE Lab 3
    Document6 pagini
    CDE Lab 3
    RoscaFlorin
    Încă nu există evaluări
  • CDE Lab 4 PDF
    CDE Lab 4 PDF
    Document7 pagini
    CDE Lab 4 PDF
    RoscaFlorin
    Încă nu există evaluări
  • Laborator 4 ASDN
    Laborator 4 ASDN
    Document7 pagini
    Laborator 4 ASDN
    RoscaFlorin
    Încă nu există evaluări
  • CDE Lab 1
    CDE Lab 1
    Document9 pagini
    CDE Lab 1
    RoscaFlorin
    100% (1)
  • Raport Lab.6 (SDA)
    Raport Lab.6 (SDA)
    Document11 pagini
    Raport Lab.6 (SDA)
    RoscaFlorin
    Încă nu există evaluări
  • Laborator 1 APA
    Laborator 1 APA
    Document8 pagini
    Laborator 1 APA
    RoscaFlorin
    Încă nu există evaluări
  • Laborator 4 ASDN
    Laborator 4 ASDN
    Document7 pagini
    Laborator 4 ASDN
    RoscaFlorin
    Încă nu există evaluări
  • Laborator 3 APA
    Laborator 3 APA
    Document22 pagini
    Laborator 3 APA
    RoscaFlorin
    Încă nu există evaluări
  • Laborator 2 APA
    Laborator 2 APA
    Document17 pagini
    Laborator 2 APA
    RoscaFlorin
    Încă nu există evaluări
  • Raport Lab.7 (SDA)
    Raport Lab.7 (SDA)
    Document10 pagini
    Raport Lab.7 (SDA)
    RoscaFlorin
    Încă nu există evaluări
  • Lab 7 PC
    Lab 7 PC
    Document4 pagini
    Lab 7 PC
    RoscaFlorin
    Încă nu există evaluări