Documente Academic
Documente Profesional
Documente Cultură
calculatoarelor
Seminar 11
Subprograme,
alocare statica de memorie
2023
Cuprins
Probleme matrice
1. Scrieți programul C care realizează citirea si afișarea unui vector utilizând subprograme
2. Scrieți programul C care realizează produsul scalar dintre doi vectori. Cerința se va
rezolva intr-un subprogram (2 variante)
2.1 rezultat intors prin parametru
2.2 rezultat intors prin numele functiei
3. Scrieți programul C care realizează produsul vectorial a doi vectori. Cerința se va rezolva
intr-un subprogram (rezultat întors prin parametru).
4. Scrieți programul C care realizează suma elementelor unei matrice din triunghiul de
deasupra diagonalelor (inclusiv diagonalele) - rezultat intors prin parametru.
5. Scrieți programul C care determina elementul maximul din triunghiul din stânga
diagonalelor unei matrice pătrate (exclusiv diagonalele) - rezultat intors prin
parametru - TEMA.
6. Fie o matrice mxn care contine notele a m studenti la n discipline. Scrieti programul
C care contine subprogramul care determina disciplinele cu cei mai multi restantieri.
3
Problema 1
Rezolvare
#include<stdio.h> int main()
#include<conio.h> {
int m;
//nr. subprograme: 2 float v[10];
printf("Dati dimensiunea vectorului:\n");
//citirea unui vector scanf("%d", &m);
void citireV(int m, float v[10])
{ printf("\nCitire vector:\n");
int i; citireV(m,v);
for (i=0;i<m;i++)
{ printf("\nAfisare vector:");
printf("v[%d] = ", i); afisareV(m,v);
scanf("%f", &v[i]);
} getch();
} return 0;
}
void afisareV(int m, float v[10])
{
int i;
printf("\n");
for (i=0;i<m;i++)
printf("v[%d] =%6.2f\n", i, v[i]);
}
4
Problema 2
Enunt: Scrieți programul care realizează produsul scalar dintre doi vectori. Cerința
se va rezolva intr-un subprogram (2 variante):
-> rezultat intors prin parametru
-> rezultat intors prin numele functiei
Exemplu numeric:
// produs scalar a 2 vectori - var. 1 rezultat intors prin parametru //ps - varianta 1
void ps1(float v1[10], float v2[10], int m, float *ps) printf("\nVarianta 1");
{ ps1(v1, v2, m, &prodSc1);
int i; printf("\nProdusul scalar (var. 1) = %6.2f", prodSc1);
*ps=0;
for(i=0;i<m;i++) //ps - varianta 2
*ps=*ps + v1[i]*v2[i]; printf("\n\nVarianta 2");
} prodSc2=ps2(v1, v2, m);
printf("\nProdusul scalar (var. 2) = %6.2f", prodSc2);
// produs scalar a 2 vectori - var. 2 rezultat intors prin numele functiei //sau printf("\nProdusul scalar (var. 2) = %6.2f", ps2(v1, v2, m));
float ps2(float v1[10], float v2[10], int m) ...
{
int i; }
float ps;
ps=0;
for (i=0;i<m;i++)
ps= ps + v1[i]*v2[i];
return ps;
}
6
Problema 3
Enunt: Scrieți programul care realizează produsul vectorial a doi vectori. Cerința se
va rezolva intr-un subprogram (rezultat întors prin parametru).
Exemplu numeric:
7
Problema 3
Rezolvare
8
Problema 4
Enunt: Scrieți programul care realizează suma elementelor unei matrice din
triunghiul de deasupra diagonalelor (inclusiv diagonalele) - rezultat intors prin
parametru.
Exemplu numeric:
10
Problema 5 - TEMA
Enunt: Scrieți programul care determina elementul maximul din triunghiul din
stânga diagonalelor unei matrice pătrate (exclusiv diagonalele) - rezultat intors
prin parametru.
Exemplu numeric:
...
void maximTriStgDiagExcl (float mat[10][10], int m, float *max)
{
int i,j;
*max=mat[1][0];
for(i = 1; i < m-1; i++)
for(j = 0; j < m-1-i; j++)
if (*max<mat[i][j]) *max = mat[i][j];
}
...
12
Problema 6
Enunt: Fie o matrice mxn care contine notele a m studenti la n discipline. Scrieti
programul C care contine subprogramul care determina disciplinele cu cei mai
multi restantieri
Exemplu numeric:
15
Spor la învățat !
16