Sunteți pe pagina 1din 10

Ministerul Educației, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei

la lucrarea de laborator nr. 1 la SDA

A efectuat studentul grupei: SI-181


Cerchez Mihai

A verificat profesorul: l.u. Lazu Victoria

Chișinău 2019
Sarcina:
Să se scrie un program care creează un tabel de numere și
adună coloanele, apoi rezultatul se afișează într-un tabel
unidemnsional.

Codul: (prin adresă)


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int RndInt(int min, int max)


{
return rand() % (max - min + 1) + min;
}
void cr2(int *ptr, unsigned short int nr, unsigned short int nc)
{
int K = 0;
for (int i = 0; i < nr; i++)
{
printf("\n");
for (int j = 0; j < nc; j++)
{
K = RndInt(1, 999);
printf("%d ", K);
*(ptr + (nc*i) + j) = K;
}
}
}

void cr1(int *ptrU, int*ptrB, unsigned short int nr, unsigned short int nc)
{
int K = 0, res;
for (int i = 0; i < nc; i++)
{
res = 0;
for (int j = 0; j < nr; j++)
{
res += *(ptrB + (nc*j) + i) ;
}
*(ptrU + K++) = res;
}
}
void afisare1(int *ptr, int size)
{
printf("\n\n\nafisare tabel unidim.:\n\n");
for (int i = 0; i < size ; i++)
printf("%d ", *(ptr+i));
}
int main()
{
const int N = 100;
srand(static_cast<unsigned int>(time(NULL)));
unsigned short int nr, nc;
int tab[N][N], arr[N*N];
printf("Introdu numarul de rinduri: ");
scanf("%hu", &nr);
printf("Introdu numarul de coloane: ");
scanf("%hu", &nc);
cr2(&tab[0][0], nr, nc);
cr1(&arr[0], &tab[0][0], nr, nc);
afisare1(&arr[0], nc);
printf("\n\n");
return EXIT_SUCCESS;
}

Output:
Codul: (variabile dinamince, pointeri)
#include<stdio.h>

#include<stdlib.h>

#include<time.h>

int rndint(int min, int max)

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

int **Crearea_TablouluiUnidimensional(int nr, int nt)

{ int i, j;

int **arr = (int**)malloc(nr*sizeof(int*));

int N;

printf("\nTabelul bidimensional (randuri si coloane):");

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

*(arr + i) = (int*)malloc(nt*sizeof(int));

printf("\n");

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

N=rndint(1,10);

printf("\n[%d][%d]=%d", i, j, N);

(*(*(arr+i) +j))= N;

}
}

return arr;

int *Func2(int nr, int nt, int **tab)

int *arr= (int*)malloc(nt*sizeof(int));

int k=0 , v =0;

for(int i=0; i<nt; i++)

k = 0;

for(int j=0; j<nr; j++)

k += *(*(tab+j) +i);

*(arr+ v++)= k;

return arr;

void Afis(int *tab, int siz)

{ printf("\n\nTablou unidimensional:\n\n");

for(int i=0; i<siz; i++)

printf("%d ", *(tab+i));

int main()

srand(static_cast<unsigned int>(time(NULL)));
int nr, nt;

printf("Introdu nr de randuri: ");

scanf("%d", &nr);

printf("Introdu nr de coloane: ");

scanf("%d", &nt);

int **tab= Crearea_TablouluiUnidimensional(nr, nt);

int *tab2= Func2(nr, nt, tab);

Afis(tab2, nt);

for(int i=0; i<nr; i++)

free(*(tab+i));

free(tab);

free(tab2);

printf("\n\n\n");

return 0; Output:
}
Codul: (variabile globale)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 100
int tab1[N][N], tab2[N*N];

int RndInt(int min, int max)


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

void CreareBD(int nr, int nc)


{
int k = 0;
printf("\nTabelul bidimensional (randuri si coloane):");
for (int i = 0; i < nr; i++, printf("\n\n"))
for (int j = 0; j < nc; j++)
{
k = RndInt(11, 99);
tab1[i][j] = k;
printf("\n[%d][%d] = %d",i,j,k);
}

void CreareUD(int nr, int nc)


{

int k = 0 ,res;
for (int j = 0; j < nc; j++)
{
res = 0;

for (int i = 0; i < nr; i++)


{
res += tab1[i][j];

}
tab2[k++] = res;
}
}
void afis(int k)
{
printf("Tabloul unidimensional: \n");
for (int i = 0; i < k; i++)
printf("%d ", tab2[i]);
}

int main()
{
srand(static_cast<unsigned int>(time(NULL)));
int nr, nc;

printf("Introdu nr de rinduri: ");


scanf("%d", &nr);
printf("Introdu nr de coloane: ");
scanf("%d", &nc);
CreareBD(nr,nc);
CreareUD(nr, nc);
afis(nc);
printf("\n\n\n");
return 0;
}
Concluzii:
În această lucrare de laborator am învățat cum să
adun în limbajul de programare C coloanele dintr-un
tabel și să afișez aparte într-un tablou unidimensional
rezultatele fiecărei coloane corespunzătoare.
Programul lucrează pe baza introducerii de la
tastatură a nr. de coloane si rânduri, ceea ce permite
verificarea lui mai variată, calculând orice tabel cu N
numere de coloane utilizând pointeri, variabile
globale și locale.

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