RAPORT
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
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
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:
printf("s=%d", s);
getch();
break;
case '3' :
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:
a = 33;
pa = &a;
ppa = &pa;
pppa = &ppa;
ppppa = &pppa;
pppppa = &ppppa;
printf("\n%d", *****pppppa);
getch();
}
Rezultatele obținute:
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.