Sunteți pe pagina 1din 14

Ministеrul Еducаțiеi, Culturii și Cеrcеtării аl Rеpublicii Mоldоvа

Univеrsitаtеа Tеhnică а Mоldоvеi


Fаcultаtеа Cаlculаtоаrе, Infоrmаtică şi Micrоеlеctrоnică
Dеpаrtаmеntul Ingineria Software și Automatică

RAPORT

Lucrarea de laborator Nr.1


la disciplina Structuri de date și algoritmi

VARIANTA 1-73

A efectuat: st.gr.TI-194
Ciobanu Cristina
A verificat: asist.univ.
Ursu Adriana

CHIŞINĂU – 2020
Tema: Analiza eficienţei prelucrării structurilor de date cu pointeri

Scopul lucrării: 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.
Obiectivele lucrării: Aprecierea personală a nivelului de cunoaştere a următoarelor
compartimente:
- a analizei algoritmilor şi a specificului organizarii programelor cu si fără pointeri
(declarări şi parcurgeri cu pointeri).
- a tehnicilor de programare şi principiilor de elaborare a modelelor de calcul.
PARTEA PRACTICĂ
Exercițiul 1: Analizati efectele utilizarii pointerilor la inversarea ordinii de apariţie a
elementelor unui şir.
Listing-ul programului:
#include<stdio.h>
void main(void)
{
int sir[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}, aux;
int *p_init, *p_fin;

for(p_init = sir, p_fin = sir + sizeof(sir) / sizeof(sir[0]) - 1; p_init <


p_fin; p_init++, p_fin--) {
aux = *p_init;
*p_init = *p_fin;
*p_fin = aux;
}
for(p_init = sir, p_fin = sir + sizeof(sir) / sizeof(sir[0]); p_init <
p_fin; p_init++) {
printf("\n %d", *p_init);
}
}

Rezultatele obținute:
Exercițiul 11: Programul de mai jos citeste si afiseaza elementele a doua tablouri, la primul
accesul se face indexat, la al doilea prin pointeri.   Rulaţi, afişaţi şi analizaţi

Listing-ul programului:
#include <stdio.h>
#include <conio.h>
#define N 5
int tab1[N], tab2[N];
void citire1(void) /* citeste elementele lui tab1 prin accesarea indexata a
elementelor */
{
int i;
puts("Introduceti elementele lui tab1:");
for(i = 0; i < N; i++) {
putchar(':'); /* citire1 */
scanf("%d", &tab1[i]);
} /*for i*/
}
void tiparire1(void) /* tipareste elementele lui tab1 prin accesarea indexata
a elementelor */
{
int i;
puts("Elementele lui tab1:");
for(i = 0; i < N; i++) {
printf("%d ", tab1[i]); /* tiparire1 */
}
putchar('\n');
}
void citire2(void) /* citeste elementele lui tab2 - accesarea fiecarui
element se face printr-un pointer la el */
{
int *pi;
puts("Introduceti elementele lui tab2:");
for(pi = tab2; pi < tab2 + N; pi++) {
/* initializari echivalente sunt pi=&tab2

sau pi=&tab[0]; conditie echivalenta pi<=&tab2[N-1] */


putchar(':');
scanf("%d", pi);
} /*for pi*/
} /* citire2 */
void tiparire2(void) /* tipareste elementele lui tab2 prin accesare la
pointeri */
{
int *pi;
puts("Elementele lui tab2:");
for(pi = tab2; pi < tab2 + N; pi++) {
printf("%d ", *pi); /* tiparire2 */
}
putchar('\n');
}
void main(void) { citire1(); tiparire1(); citire2(); tiparire2();
getche(); }

Rezultatele obținute:

Exercițiul 57: Rulaţi, afişaţi şi analizaţi. Matrice alocata dinamic (cu dimensiuni cunoscute la
executie)

Listing-ul programului:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, i, j;
int ** mat; // adresa matrice
// citire dimensiuni matrice<
printf("n=");
scanf("%d", &n);
// alocare memorie ptr matrice
mat = (int **) malloc(n * sizeof(int*));
for(i = 0; i < n; i++) {
mat[i] = (int*) calloc(n, sizeof(int));
}
// completare matrice
for(i = 0; i < n; i++)
for(j = 0; j < n; j++) {
mat[i][j] = n * i + j + 1;
}
// afisare matrice
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++) {
printf("%6d ", mat[i][j]);
}
printf("\n");
}
return 0;
}

Rezultatele obținute:

Exercițiul 59: Modificaţi programul prin parcurgeri de pointeri şi cu pointeri la pointeri


(indirectare multipla). Apoi Rulaţi, afişaţi şi analizaţi
Listing-ul programului:
#include <conio.h>;
#include <stdio.h>;
#include <stdlib.h>;
void main()
{
int *p, *a, i, j, n, k, s, l;
char ch;
printf("Indicati dimensiunea matricei:");
scanf("%d", &n);
a = (int *) malloc(n * n); //Alocarea dinamica a memoriei
p = a; // pointu p se initializeaza cu pointu a
for(i = 0; i < n; i++)
for(j = 0; j < n; j++) {
printf("a[%d,%d]=", i + 1, j + 1);
scanf("%d", p++);
} //Se introduce valori in pointu p si pointu p intorudce valorile in
pointu a
while(1) {

printf("1 - afisarea elementelor prime\n");


printf("2 - suma elementelor impare\n");
printf("3 - frecventa elementului indicat\n");
printf("4 - iesire\n");
ch = getche();
switch(ch) {
case '1' :
printf("Elementele matricei sunt:\n");
p = a; //initializarea pointurului p cu a
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++)
{ printf(" %d", *p++); }
printf("\n");
} // afisharea valorilor din point
printf("Elementele prime ale liniilor impare sunt:\n");
p = a; // Initializam pointu p cu pointu a
for(i = 0; i < n; i += 2) {
for(j = 0; j < n; j++) {
k = 1;
s = 0;
while(k <= *p && *p != 0) {
if(*p % k == 0) { s++; } //daca valoarea pointului p la
impartire cu k =0
k++;
}
if(s == 2 || *p == 1) //daca cointu p =1
{ printf(" %d", *p); }
p++;
} // afisharea valoarea pointului p
p += n;
}
getch();
break;
case '2' :

printf("Elementele maricei sunt:\n");


p = a; //initializam pointu p cu pointu a
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++)
{ printf(" %d", *p++); }
printf("\n");
} // afisham valorile pointului p
printf("Suma elementele impare ale coloanelor pare sunt:\n");
s = 0;
p = a; //Initializam pointu cu poinru a
for(i = 0; i < n; i++)
for(j = 1; j < n; j += 2)
if(*(p + i * n + j) % 2 == 1) //daca valoarea p[i][j]/2==1
{ s += *(p + i * n + j); } //la s se adauga valoarea p[i][j]

printf("s=%d", s);
getch();
break;

case '3' :

printf("Elementele maricei sunt:\n");


p = a;
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++)
{ printf(" %d", *p++); }
printf("\n");
}//afisez valoarea pointului
printf("Indicati numarul la care doriti sa aflati frecventa: ");
scanf("%d", &k);
s = 0;
p = a; // initializarea pointului p cu poitu a
if(n % 2 == 0)
{ l = n / 2 - 1; }
else {
l = n / 2;
}

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


for(j = i + 1; j < n - i - 1; j++)
if(*(p + i * n + j) == k) {
s++; //daca pointu p[i][j]=k
}
printf("\n Frecventa in cadranul 1 este: %d", s);
s = 0;
for(i = n / 2 + 1; i < n; i++)
for(j = i - 1; j >= n - i; j--)
if(*(p + i * n + j) == k) {
s++; //daca pointu p[i][j]=k
}
printf("\n Frecventa in cadranul 3 este: %d", s);
getch();
break;
case '4' :
getch();
exit(1);
break;
default:
printf("\nTastati intre 1 si 3 !\n");
getch();
}
}
}

Rezultatele obținute:
Exercițiul 61: Analizati efectele utilizarii funcţiilor de caractere prin precizarea valorilor care
se afiseaza pe ecran la executia programului:

Listing-ul programului:
#include <stdio.h>
int a[5][5]; int b[25]; int i, j;
void f1(void)
{
int q = 0, w = 0;
printf("introduceti vectorul");
while(i < 25) {
scanf("%d", &b[i]);
i++;
}
for(i = 0; i < 25; i++) {
a[q][w] = b[i];
if(w < 4) {
w++;
} else if(q < 4) {
q++;
w = 0;
}
}
printf("matricea obtinută din vector este:");
for(i = 0; i < 5; i++) {
printf("\n");
for(j = 0; j < 5; j++) {
printf(" %d ", a[i][j]);
}
}
exit(1);
}
void f2(void)
{
int k = 0;
char t = 0;
for(i = 0; i < 5; i++)
for(j = 0; j < 5; j++) {
scanf("%d", &a[i][j]);
}
for(i = 0; i < 5; i++)
for(j = 0; j < 5; j++) {
b[k] = a[i][j];
k++;
}
printf("vectorul primit din matrice e:");
for(i = 0; i < k; i++) {
printf(" %d \n", b[i]);
}
}
main()
{
printf("1:matrice->vector\t2:vector->matrice\n");
if(getchar() == '2') {
f1();
} else {
f2();
}
}

Rezultatele obținute:

Exercițiul 65: Da-ţi la execuţie şi analizaţi modul de organizare şi obţinere a rezultatelor ,


afisind fiecare pas (linie)
Listing-ul programului:
#include<stdio.h>
#include<conio.h>
int a;
int *pa;
int **ppa;
int ***pppa;
int ****ppppa;
int *****pppppa;
void main()
{

a = 33;
pa = &a;
ppa = &pa;
pppa = &ppa;
ppppa = &pppa;
pppppa = &ppppa;
printf("\n%d", *****pppppa);
getch();
}
Rezultatele obținute:

Exercițiul 67: : Da-ţi la execuţie şi analizaţi modul de organizare şi obţinere a rezultatelor .


Listing-ul programului:
#include<stdio.h>
#include<conio.h>
typedef char* f();
f *a[2][2];//o matrice de pointeri spre functii
char *s;
char *f1() { return "functia1"; }
char* f2() { return "functia2"; }
char* f3() { return "functia3"; }
char* f4() { return "functia4"; }
void main()
{
a[0][0] = f1;
a[0][1] = f2;
a[1][0] = f3;
a[1][1] = f4;
for(unsigned char i = 0; i < 2; i++)
for(unsigned char j = 0; j < 2; j++) {
s = a[i][j]();
printf("\n %s", s);
}
getch();
}

Rezultatele obținute:
Exercițiul 69: : Da-ţi la elaboraţi şi analizaţi modul de organizare a parcurgerii şi obţinere a
rezultatelor, afişând toate valorile. Face-ţi îmbunătăţiri şi rulaţi din nou. Comparaţi.

Listing-ul programului:
#include <stdio.h>
#include <math.h>
#define N 50
double f(double x);
double SumaPatrateFunctii(double (*f)(double), double x[], int n);
void main()
{
double x, tab[50], pas = 2 * M_PI / N, s1, s2;
int i;
for(i = x = 0; i < N ; x += pas) {
tab[i++] = x;
}
s1 = SumaPatrateFunctii(sin, tab, N);
s2 = SumaPatrateFunctii(f, tab, N);
printf("\nS1=%lf \nS2=%lf", s1, s2);
}
//---------------------------------------------------------------
double SumaPatrateFunctii(double (*f)(double), double x[], int n)
{
double sumap = 0;
for(n--; n >= 0; n--) {
sumap += f(x[n]) * (*f)(x[n]);
}
return sumap;
}
//----------------------------------------------------------------
double f(double x) { return 1. / (x + 1); }

Rezultatele obținute:
CONCLUZIE
Lucrarea de laborator nr.1 reprezintă o apreciere personală a nivelului de cunoaștere a analizei
algoritmilor și a specificului organizării programelor cu și fără pointeri. În timpul efectuări sarcinilor
propuse, am rulat mai multe programe pentru a înțelege cum declarăm sau parcurgem pointeii, însă
nu toate programele puteau fi rulate din cauza erorilor multiple. Spre exemplu itemii 3, 11 care are
33 erori, 21-10 erori, ,23-25 erori, 25-3 erori, 27-7erori, 37-erori, 39-erori, 41- cod nefinalizat, 45,
47, 49, 51, 53,55, 63, 71, 73, la fel au o multime de erori.. Am introdus datele inițiale de la tastatură
și am afișat rezultatele obținute pe ecran. Am căpătat cunoștințe asupra tehnicilor de programare şi
principiilor de elaborare a modelelor de calcul.

BIBLIOGRAFIE:
1. Lucrari de laborator nr 1. Ștefan Marin.

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

  • Lab 4 PC UTM FCIM TI
    Lab 4 PC UTM FCIM TI
    Document10 pagini
    Lab 4 PC UTM FCIM TI
    Adrian Chiforiuc
    Încă nu există evaluări
  • Lab3 SDA UTM 2014
    Lab3 SDA UTM 2014
    Document13 pagini
    Lab3 SDA UTM 2014
    Artur Spatari
    Încă nu există evaluări
  • Lab 1 SDA Var 10
    Lab 1 SDA Var 10
    Document6 pagini
    Lab 1 SDA Var 10
    Vladimir Zgardan
    Încă nu există evaluări
  • NR 4
    NR 4
    Document7 pagini
    NR 4
    Graid Icen
    Încă nu există evaluări
  • Lucrare de Laborator NR.1 LFC
    Lucrare de Laborator NR.1 LFC
    Document10 pagini
    Lucrare de Laborator NR.1 LFC
    John Smith
    Încă nu există evaluări
  • Laborator nr1 SDA
    Laborator nr1 SDA
    Document25 pagini
    Laborator nr1 SDA
    Iulian Decuseara
    Încă nu există evaluări
  • Proiect de Curs BD Exemplu-Unlocked
    Proiect de Curs BD Exemplu-Unlocked
    Document60 pagini
    Proiect de Curs BD Exemplu-Unlocked
    Amarfii Sergiu
    Încă nu există evaluări
  • Laborator Porgramarea Calculatoarelor 4
    Laborator Porgramarea Calculatoarelor 4
    Document8 pagini
    Laborator Porgramarea Calculatoarelor 4
    Sergiu Lungu
    Încă nu există evaluări
  • Matematica Speciala - Odt
    Matematica Speciala - Odt
    Document5 pagini
    Matematica Speciala - Odt
    Trifan Petru
    Încă nu există evaluări
  • Grafica Pe Calculator Lab 1 Java
    Grafica Pe Calculator Lab 1 Java
    Document4 pagini
    Grafica Pe Calculator Lab 1 Java
    Calc 182
    Încă nu există evaluări
  • Moraru Roman Co Lab 1
    Moraru Roman Co Lab 1
    Document5 pagini
    Moraru Roman Co Lab 1
    Belinschi Andrei
    Încă nu există evaluări
  • Lab 1 GC
    Lab 1 GC
    Document4 pagini
    Lab 1 GC
    Ion Popescu
    Încă nu există evaluări
  • TAP Lab6 Popov Biatrice - CR 191
    TAP Lab6 Popov Biatrice - CR 191
    Document6 pagini
    TAP Lab6 Popov Biatrice - CR 191
    Alina Axenti
    Încă nu există evaluări
  • Lab 1 SDA V10
    Lab 1 SDA V10
    Document16 pagini
    Lab 1 SDA V10
    Dima Cucu
    Încă nu există evaluări
  • CDE (Lab 1)
    CDE (Lab 1)
    Document5 pagini
    CDE (Lab 1)
    BlandjLdhui
    Încă nu există evaluări
  • TAP Lab2
    TAP Lab2
    Document4 pagini
    TAP Lab2
    Adrian Bodorin
    Încă nu există evaluări
  • Lab 3 Rom
    Lab 3 Rom
    Document6 pagini
    Lab 3 Rom
    Jorca Ţuţuianu
    Încă nu există evaluări
  • Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Document4 pagini
    Laboratorul Nr1 La Grafica Pe Calculator Gc.
    Ion Damaschin
    Încă nu există evaluări
  • Laborator 1 Cucu Eugeniu
    Laborator 1 Cucu Eugeniu
    Document5 pagini
    Laborator 1 Cucu Eugeniu
    Cucu Eugen
    Încă nu există evaluări
  • LAb 6 SDA
    LAb 6 SDA
    Document7 pagini
    LAb 6 SDA
    Dima Cucu
    Încă nu există evaluări
  • SDA Raport 11
    SDA Raport 11
    Document10 pagini
    SDA Raport 11
    Alina Axenti
    Încă nu există evaluări
  • Raport C++ Lab 6
    Raport C++ Lab 6
    Document4 pagini
    Raport C++ Lab 6
    Nickolae Enachi
    Încă nu există evaluări
  • Lab APA 4
    Lab APA 4
    Document12 pagini
    Lab APA 4
    AlionaCrigan
    Încă nu există evaluări
  • Raspunsuri La Ppe
    Raspunsuri La Ppe
    Document3 pagini
    Raspunsuri La Ppe
    dasfas
    Încă nu există evaluări
  • Laborator 9 Baze de Date
    Laborator 9 Baze de Date
    Document5 pagini
    Laborator 9 Baze de Date
    Stanescu Yonut
    Încă nu există evaluări
  • Laboratorul 5
    Laboratorul 5
    Document7 pagini
    Laboratorul 5
    ion
    Încă nu există evaluări
  • Lab 3 LFA
    Lab 3 LFA
    Document3 pagini
    Lab 3 LFA
    Fil Gorea
    Încă nu există evaluări
  • PSLab 3
    PSLab 3
    Document14 pagini
    PSLab 3
    Victor Turculet
    Încă nu există evaluări
  • LL8 Mereuta Ana TI-192
    LL8 Mereuta Ana TI-192
    Document6 pagini
    LL8 Mereuta Ana TI-192
    Anya Mr
    Încă nu există evaluări
  • Raport 6
    Raport 6
    Document3 pagini
    Raport 6
    Dekionlolz В
    Încă nu există evaluări
  • AMOO Lab2.Use Case
    AMOO Lab2.Use Case
    Document5 pagini
    AMOO Lab2.Use Case
    Dorin Gribincea
    Încă nu există evaluări
  • Examen PW
    Examen PW
    Document71 pagini
    Examen PW
    DorinRotaru
    Încă nu există evaluări
  • Lab 1 C++
    Lab 1 C++
    Document13 pagini
    Lab 1 C++
    Maxim Tincu
    Încă nu există evaluări
  • Grafica Laborator Nr.2
    Grafica Laborator Nr.2
    Document8 pagini
    Grafica Laborator Nr.2
    Cebotari Ion
    100% (1)
  • Raport Laborator nr10-11
    Raport Laborator nr10-11
    Document37 pagini
    Raport Laborator nr10-11
    Eugen Garaz
    Încă nu există evaluări
  • Amoo 7
    Amoo 7
    Document4 pagini
    Amoo 7
    AlionaCrigan
    Încă nu există evaluări
  • Vasilachi Igor Lab 5 BDC v1
    Vasilachi Igor Lab 5 BDC v1
    Document8 pagini
    Vasilachi Igor Lab 5 BDC v1
    Fil Gorea
    Încă nu există evaluări
  • MMC Lab3 Rap
    MMC Lab3 Rap
    Document4 pagini
    MMC Lab3 Rap
    I LOVE ME
    Încă nu există evaluări
  • Examen, TS, Bilet 75
    Examen, TS, Bilet 75
    Document1 pagină
    Examen, TS, Bilet 75
    Никита Баранов
    Încă nu există evaluări
  • Amoo 2
    Amoo 2
    Document8 pagini
    Amoo 2
    AlionaCrigan
    Încă nu există evaluări
  • Enterprise Architect
    Enterprise Architect
    Document8 pagini
    Enterprise Architect
    Dani Lungu
    Încă nu există evaluări
  • Matematica Discreta Lab1
    Matematica Discreta Lab1
    Document9 pagini
    Matematica Discreta Lab1
    Maxim Tincu
    Încă nu există evaluări
  • Lab3 AMOO
    Lab3 AMOO
    Document7 pagini
    Lab3 AMOO
    Сергей Борта
    Încă nu există evaluări
  • PS TS
    PS TS
    Document14 pagini
    PS TS
    Victor Turculet
    Încă nu există evaluări
  • AMOO Lab6
    AMOO Lab6
    Document7 pagini
    AMOO Lab6
    sergiu
    Încă nu există evaluări
  • AI-191 Medinschi Ion SO4
    AI-191 Medinschi Ion SO4
    Document5 pagini
    AI-191 Medinschi Ion SO4
    Carolin
    Încă nu există evaluări
  • Lab7 AMOO
    Lab7 AMOO
    Document11 pagini
    Lab7 AMOO
    Сергей Борта
    Încă nu există evaluări
  • Lab2 Somipp
    Lab2 Somipp
    Document6 pagini
    Lab2 Somipp
    Iov Albu
    Încă nu există evaluări
  • Lab5 AMOO
    Lab5 AMOO
    Document12 pagini
    Lab5 AMOO
    Сергей Борта
    Încă nu există evaluări
  • PC Raport 6 7.odt
    PC Raport 6 7.odt
    Document16 pagini
    PC Raport 6 7.odt
    Trifan Petru
    Încă nu există evaluări
  • Lab1 Po
    Lab1 Po
    Document7 pagini
    Lab1 Po
    Alina Axenti
    Încă nu există evaluări
  • Laborator 3
    Laborator 3
    Document17 pagini
    Laborator 3
    DorelDjj
    Încă nu există evaluări
  • Lab7 POO
    Lab7 POO
    Document10 pagini
    Lab7 POO
    Grosu Elena
    Încă nu există evaluări
  • Lucrare de Curs LFPC
    Lucrare de Curs LFPC
    Document17 pagini
    Lucrare de Curs LFPC
    mikeylino
    Încă nu există evaluări
  • Lab 4
    Lab 4
    Document6 pagini
    Lab 4
    violina
    Încă nu există evaluări
  • Damean Alexandra IOT6
    Damean Alexandra IOT6
    Document11 pagini
    Damean Alexandra IOT6
    Damean Alexandra
    Încă nu există evaluări
  • Lucrare de Laborator nr.5
    Lucrare de Laborator nr.5
    Document25 pagini
    Lucrare de Laborator nr.5
    Dan Efros
    100% (1)
  • Lab 1 SDA UTM Tehnologii Informationale
    Lab 1 SDA UTM Tehnologii Informationale
    Document8 pagini
    Lab 1 SDA UTM Tehnologii Informationale
    Adrian Chiforiuc
    Încă nu există evaluări
  • Probleme Rezolvate in C
    Probleme Rezolvate in C
    Document6 pagini
    Probleme Rezolvate in C
    Costicã Pardaillan Lupu
    100% (1)
  • Lab 10
    Lab 10
    Document21 pagini
    Lab 10
    AndreisYo
    Încă nu există evaluări