Functii de intrare si iesire
Pentru realizarea calculului matriceal este necesara existenta matricei sau matricelor. Crearea necorespunzatoare a obiectului de lucru, si anume matricea, duce la efecte total neasteptate. De aceea, pentru a fi lipsiti de neplaceri, atentia acordata acestor functii este maxima.
Īn calculul matriceal sunt incluse si functii de intrare si iesire. Aceste functii realizeaza:
crearea matricei, fie de la consola ca īn cazul bibliotecii matrice.h, fie initializata cu zero ca īn cazul clasei matrix( constructorul cu parametrii);
afisarea matricei pe ecran.
Cum īn biblioteca de functii matrice.h se lucreaza cu o matrice de dimensiuni constante, iar īn clasa matrix se utilizeaza o variabila de tip pointer, deci dinamic, sunt prezentate ambele moduri de creare( dinamic si static).
Īn continuare se 757j97h prezinta functiile care realizeaza creare matricei. Īn practica se observa, ca pe lānga matricea dorita, sunt folosite o serie de matrice ajutatoare cum ar fi matricea unitate, matricea booleana, matricea cu 1 pe o linie si īn rest zero etc.. Functiile de creare a acestor matrice sunt functii de intrare, iar afisarea lor este realizata tot cu functii de iesire.
Matricea este creata īn modul de lucru static de la consola folosind functia din cadrul bibliotecii matrice.h :
void creation(int *n, int *m, int x[30][30])
Dupa cum se observa tipul functiei este void. Functia primeste ca parametrii urmatoarele variabile:
int x[30][30]- variabila de tip pointer constant( se aloca memorie pentru 30 de linii si 30 de coloane, fig.1) la īntreg. Aceasta reprezinta matricea care este citita de la tastatura.
int *n- parametru de iesire, numarul de linii a matricei, care este citit de la tastatura. Transferul se realizeaza prin valoare.
int *m- parametru de iesire, numarul de coloane a matricei, care este citit de la tastatura. Transferul se realizeaza prin valoare.
Declarānd matricea de dimensiuni constante se aloca de fiecare data un tablou cu 30 de linii si 30 de coloane:
......... 30 de coloane
.........
............
30 de linii ..........
fig. 1
, chiar daca este necesar de exemplu decāt o matrice de doua linii si doua coloane( īn fig.1 casutele albe reprezinta matricea introdusa de la tastatura cu doua linii si doua coloane).
Continutul functiei creation este urmatorul :
printf("\n Matrix lines number:");
scanf("%d",n);
valid_l_c(n);
printf("\n Matrix columns number:");
scanf("%d",m);
valid_l_c(m);
printf("\n The matrix is:");
for(i=0;i<*n;i++)
for(j=0;j<*m;j++)
Se citeste numarul de linii si de coloane ale matricei, urmānd introducerea elementelor matricei. Dupa cum se observa fiecare citire este urmata de o validare. Validarea asigura ca nu sunt introduse date eronate( caractere īn loc de īntregi, float īn loc de īntreg, numarul de linii sau de coloane depaseste 30, sau este mai mic sau egal cu zero). Validarea se realizeaza cu ajutorul a doua functii:
void valid_no_integer(int *l, int k);
void valid_l_c(int *l).
void valid_l_c(int *l)- realizeaza validarea numarului de linii si de coloane introduse de la tastatura. Functia primeste ca parametru(atāt de intrare cāt si de iesire) un īntreg int *l, care este transferat catre alte functii prin valoare. Continutul acestei functii este urmatorul:
if((*l<1)||(*l>30))
do
while ((*l<1)||(*l>30)||(*endptr>9));
Aceasta validare este foarte puternica deoarece nu permite si introducerea cifrelor urmate de caractere. Numarul introdus de la tastatura este citit ca un sir de caractere. Se realizeaza conversia de la sir de caractere la īntreg cu ajutorul functiei int strtod(char, & char*) din cadrul bibliotecii stdlib.h. Īn caz de introducere necorespunzatoare se afiseaza mesajul Error.
void valid_no_integer(int *l, int k) realizeaza validarea introducerii unui īntreg de la tastatura. Este folosita īn cadrul functiei de creare a matricei īn mod static atunci cānd sunt introduse de la tastatura elementele matricei. Functia primeste ca parametrii doua variabile de tip īntreg si anume:
int k- parametru de intrare; functia scanf īntoarce valoare 0 daca citirea este incorecta sau 1 in cazul citirii corecte. Aceasta valoare este primita de functia valid_no_integer prin intermediul parametrului k. Daca k este egal cu 0 se afiseaza mesajul Error si se cere o noua introducere a elementului.
int *l- reprezinta valoarea introdusa care īndeplineste toate conditiile de validitate. Transferul parametrului de iesire se realizeaza prin valoare.
Continutul acestei functii este urmatorul:
if (k==0)
while(k==0);
}
Spre deosebire de functia de validare precedenta, aceasta nu este la fel de puternica deoarece permite introducerea numerelor urmate de caractere.
Asadar aceasta a fost functia de creare de la tastatura a unei matrice īn mod static. Īn continuare se prezinta modul de creare de la consola a unei matrice alocate dinamic. Lucrul cu matrice alocate dinamic este implementat īn clasa matrix. Crearea de la tastatura a unei matrice se realizeaza īn cadrul constructorului implicit al clasei matrix, precum si cu operatorul de shiftare la dreapta.
Clasa matrix are implementata doi constructori. Unul este implicit fara parametri si realizeaza introducerea matricei de la tastatura, iar cel de-al doilea primeste ca parametrii numarul de linii si de coloane si creaza matricea cu elementele zero.
Constructorul implicit are urmatoarea configuratie:
matrix::matrix()
Declararea unei matrice cuprinde tipul de data asociat elementului, numele masivului si numarul de dimensiuni ale acestuia, adica [ ][ ] ,sau putem declara un pointer la o matrice de forma int **x.
Folosind a doua metoda de declarare a unei matrice folosim atāt spatiu cāt ne trebuie, alocāndu-l dinamic īn functie de cāte linii si coloane avem.
Alocarea dinamica presupune utilizarea memoriei īntr-un mult mai eficient si anume se aloca memorie exact cāt este necesar pentru memorarea matricei. Pentru a realiza aceasta se foloseste functia membru int** aloc_mat(int, int). Dupa cum se observa din secventa prezentata mai sus alocarea memoriei necesare matricei se realizeaza dupa introducerea numarului de linii si coloane. Este foarte important sa nu se omita acest pas, altfel rezultatele obtinute fiind cu totul altele. Functia de alocarea a matricei are ca drept de acces private.
Continutul ei este urmatorul:
int **pmat;
pmat=(int **)malloc(n*sizeof(int*));
for (int i=0;i<n;i++)
pmat[i]=(int*)malloc(m*sizeof(int));
return pmat;
Functia primeste ca date de intrare numarul de linii n si numarul de coloane m al matricei si īntoarce un pointer la aceasta.
Matricea X de dimensiuni n=4 si m=3, , unde n este numarul de linii si m este numarul de coloane, este alocata īn memorie ca īn Figura 2.
Figura 2. Alocare dinamica de memorie pentru o matrice
La īnceput este alocata zona de memorie pentru un vector de pointeri, care reprezinta īnceputul fiecarei linii a matricei. Vectorul contine n componente. Urmeaza alocarea zonei de memorie pentru fiecare linie a matricei. Linia matricei este alcatuita din m elemente. Dupa alocarea spatiului necesar memorarii matricei se continua cu introducerea elementelor matricei.
O alta functie de intrare este functia de supraāncarcare a operatorului de shiftare la dreapta ">>". Aceasta este declarata ca functie prietena si are urmatoarea forma:
istream &operator>>(istream &c,matrix &a)
return c;
}
Operatorul ">>" realizeaza introducerea elementelor matricei, deoarece citirea unei matrice de la tastatura este realizata atunci cānd este apelat constructorul cu parametrii, adica constructorul care initializeaza numarul de linii si de coloane ale matricei cu datele dorite, precum si elementele matricei cu zero. Daca este apelat constructorul implicit acesta realizeaza citirea numarului de linii, numarului de coloane si elementele matricei. Deci recitirea numarului de linii si de coloane este inutila. A se retine īnsa faptul ca operatorul de shiftare la dreapta este asociat unor obiecte create cu constructorul cu parametrii.
Constructorul cu parametrii amintit mai sus are structura urmatoare:
matrix::matrix(int k,int l)
Asadar au fost prezentate functiile de intrare de la consola la nivel de matrice. Au fost prezentate īn paralel modul de alocare static si varianta dinamica.
Īn continuare sunt prezentate functiile care creaza matricele speciale. Prezentarea este facuta īn paralel( static si dinamic).
Revenim la biblioteca matrice.h pentru prezentarea functiei de creare a matricei unitate. Acesta este realizata cu functia void creating_unit(int *n,int *m, int x[30][30]). Functia primeste ca parametrii urmatoarele variabile:
int *n- parametru de iesire si reprezinta liniile matricei x;
int *m- parametru de iesire si reprezinta coloanele matricei x;
int x[30][30]- parametru de iesire si reprezinta matricea unitate.
Secventa care realizeaza crearea matricei unitate este urmatoarea:
printf("\n Lines and columns number:");
scanf("%d",n);
valid_l_c(n);
*m=*n;
for(i=0;i<*n;i++)
for(j=0;j<*m;j++)
if(i==j) x[i][j]=1;
else x[i][j]=0;
Matricea unitate presupune o matrice patratica si de aceea numarul de coloane si linii este citit īn aceeasi secventa.
Īn clasa matrix matricea unitate este creata cu ajutorul functiei membru void creating_unit() . Desi se lucreaza cu o matrice alocata dinamic nu mai este necesara alocarea spatiului de memorie deoarece acesta a fost pus la dispozitie īn momentul apelarii constructorului cu parametrii. De retinut ca toate functiile de creare a matricelor speciale sunt asociate obiectelor create cu constructorul cu parametrii. Secventa care realizeaza aceasta este urmatoarea:
for (i=0;i<n;i++)
for(j=0;j<=i;j++)
if (i==j) a[i][j]=1;
else a[i][j]=a[j][i]=0;
Deci, singura diferenta dintre functia creating_unit din matrice.h si functia creating_unit din clasa matrix este aceea ca īn functia membra clasei citirea numarul de linii si de coloane nu mai este necesara. Numarul este cunoscut, n si m fiind membrii īn clasa si sunt initializati prin apelarea constructorului cu parametrii.
Functia void creating_column_1(int *n,int *m, int x[30][30]) creaza matricea cu valoarea 1 pe o coloana dorita, care se introduce de la tastatura, si īn rest elementele matricei vor fi zero. Functia primeste urmatorii parametrii:
int *n- parametru de iesire si reprezinta numarul de linii;
int *m- parametru de iesire si reprezinta numarul de coloane;
int x[30][30]-parametru de iesire si reprezinta matricea ce este obtinuta prin apelarea acestei functii.
Secventa care realizeaza crearea matricei cu valoarea 1 pe o coloana dorita este urmatoarea:
printf("\n The column with elements one is:");
k=scanf("%d",&c);
c--;
for(i=0;i<*n;i++)
for(j=0;j<*m;j++)
Īn clasa matrix matricea cu 1 pe coloana dorita este realizata cu functia membra void creating_column_1(int c). Acesta are ca parametru de intrare int c care reprezinta coloana cu elementele 1. Secventa care realizeaza crearea matricei este urmatoarea:
if (c<m)
for (i=0;i<n;i++)
for (j=0;j<m;j++)
if (j==c) a[i][c]=1;
else a[i][j]=0;
else cout<<"Column doesn't exist!";
Īn clasa coloana dorita a fi 1 este primita ca parametru īn timp ce īn functia din biblioteca matrice.h este citita de la tastatura.
Functia void creating_line_1(int *n,int *m, int x[30][30]) creaza matricea cu valoarea 1 pe o linie dorita, care se introduce de la tastatura, si īn rest elementele matricei vor fi zero. Functia primeste urmatorii parametrii:
int *n- parametru de iesire si reprezinta numarul de linii;
int *m- parametru de iesire si reprezinta numarul de coloane;
int x[30][30]-parametru de iesire si reprezinta matricea ce este obtinuta prin apelarea acestei functii.
Secventa care realizeaza crearea matricei cu valoarea 1 pe o linie dorita este urmatoarea:
printf("\n The line with elements one is:");
k=scanf("%d",&l);
l--;
for(i=0;i<*n;i++)
for(j=0;j<*m;j++)
Īn clasa matrix matricea cu 1 pe linia dorita este realizata cu functia membra void creating_line_1(int l). Acesta are ca parametru de intrare int l care reprezinta linia cu elementele 1. Secventa care realizeaza crearea matricei este urmatoarea:
if (l<n)
for (i=0;i<n;i++)
for (j=0;j<m;j++)
if (i==l) a[l][j]=1;
else a[i][j]=0;
else cout<<"Line doesn't exist!";
Īn clasa linia dorita a fi 1 este primita ca parametru īn timp ce īn functia din biblioteca matrice.h este citita de la tastatura.
Functia void creating_sec_diag(int *n, int *m, int x[30][30]) creaza matricea cu 1 pe diagonala secundara, restul elementelor matricei avānd valoarea 0. Functia primeste ca parametrii urmatoarele variabile:
int *n- parametru de iesire si reprezinta liniile matricei x;
int *m- parametru de iesire si reprezinta coloanele matricei x;
int x[30][30]- parametru de iesire si reprezinta matricea care are valoarea 1 pe diagonala secundara.
Secventa care realizeaza crearea matricei cu 1 pe diagonala secundara este urmatoarea:
printf("\n Matrix lines number:");
scanf("%d",n);
valid_l_c(n);
clrscr();
printf("\n Matrix columns number:");
scanf("%d",m);
valid_square(m,*n);
for (int i=0;i<*n;i++)
for(int j=0;j<*n;j++)
if (j==((*n)-i-1)) x[i][j]=1;
else x[i][j]=0;
Matricea cu valoarea 1 pe diagonala secundara presupune matricea patratica si de aceea este folosita functia de validare valid_square(m,*n). Ea verifica daca numarul liniilor si cel al coloanelor este egal. Īn cazul īn care sunt diferite este afisat mesajul Error si se cere o noua introducere a numarului de coloane.
Īn clasa matrix matricea cu 1 pe diagonala secundara este creata cu ajutorul functiei membru void creating_sec_diag(). Secventa care realizeaza aceasta este urmatoarea:
for (i=0;i<n;i++)
for(j=0;j<n;j++)
if (j==(n-i-1)) a[i][j]=1;
else a[i][j]=a[j][i]=0;
Numarul de linii si de coloane este cunoscut, n si m fiind membrii īn clasa si sunt initializati prin apelarea constructorului cu parametrii.
Functia void creating_0_up_main_diag(int *n, int *m, int x[30][30]) creaza matricea cu 0 deasupra diagonalei principale, restul elementelor matricei fiind citite de la tastatura. Functia primeste ca parametrii urmatoarele variabile:
int *n- parametru de iesire si reprezinta liniile matricei x;
int *m- parametru de iesire si reprezinta coloanele matricei x;
int x[30][30]- parametru de iesire si reprezinta matricea care are valoarea 0 deasupra diagonalei principale.
Secventa care realizeaza crearea matricei cu 0 deasupra diagonalei principale este urmatoarea:
printf("\n Matrix lines number :");
scanf("%d",n);
valid_l_c(n);
clrscr();
printf("\n Matrix column number:");
scanf("%d",m);
valid_square(m,*n);
clrscr();
printf("\n The matrix is:\n");
for(int i=0;i<*n;i++)
for(int j=0;j<*m;j++)
if (i>=j)
else x[i][j]=0;
Dinamic, adica īn clasa matrix , functia care realizeaza aceasta operatie se numeste creating_0_up_main_diag(). Continutul functiei este acelasi cu cel al functie de mai sus. Cum se lucreaza cu obiecte nu mai este necesara citirea numarului de linii si de coloane.
Functia void creating_0_main_diag(int *n, int *m, int x[30][30]) creaza matricea cu 0 pe diagonala principala, restul elementelor matricei fiind citite de la tastatura. Functia primeste ca parametrii urmatoarele variabile:
int *n- parametru de iesire si reprezinta liniile matricei x;
int *m- parametru de iesire si reprezinta coloanele matricei x;
int x[30][30]- parametru de iesire si reprezinta matricea care are valoarea 0 pe diagonala principala.
Secventa care realizeaza crearea matricei cu 0 pe diagonala principala este urmatoarea:
printf("\n Matrix lines number :");
scanf("%d",n);
valid_l_c(n);
clrscr();
printf("\n Matrix column number:");
scanf("%d",m);
valid_square(m,*n);
clrscr();
printf("\n The matrix is:\n");
for(i=0;i<*n;i++)
for(j=0;j<*m;j++)
if (i!=j)
else x[i][j]=0;
Īn clasa matrix, functia care realizeaza aceasta operatie se numeste creating_0_main_diag(). Functia este declarata ca functie membra fara tip. Continutul functiei este acelasi cu cel al functie de mai sus. Cum se lucreaza cu obiecte nu mai este necesara citirea numarului de linii si de coloane.
Functia void creating_0_under_main_diag(int *n, int *m, int x[30][30]) creaza matricea cu 0 sub diagonala principala, restul elementelor matricei fiind citite de la tastatura. Functia primeste ca parametrii urmatoarele variabile:
int *n- parametru de iesire si reprezinta liniile matricei x;
int *m- parametru de iesire si reprezinta coloanele matricei x;
int x[30][30]- parametru de iesire si reprezinta matricea care are valoarea 0 sub diagonala principala.
Secventa care realizeaza crearea matricei cu 0 sub diagonala principala este urmatoarea:
printf("\n Matrix lines number :");
scanf("%d",n);
valid_l_c(n);
clrscr();
printf("\n Matrix column number:");
scanf("%d",m);
valid_square(m,*n);
clrscr();
printf("\n The matrix is:\n");
for(int i=0;i<*n;i++)
for(int j=0;j<*m;j++)
if (i<=j)
else x[i][j]=0;
Dinamic, adica īn clasa matrix , functia care realizeaza aceasta operatie se numeste creating_0_under_main_diag().
Functia creating_0_under_main_diag() este functie membra fara tip si are acelasi continut cu functia creating_0_under_main_diag() din biblioteca matrice.h, mai putin citirea numarului de linii si de coloane. Initializarea lor este realizata prin apelarea constructorului cu parametrii.
Functia void creating_0_sec_diag(int *n, int *m, int x[30][30]) creaza matricea cu 0 pe diagonala secundara, restul elementelor matricei fiind citite de la tastatura. Functia primeste ca parametrii urmatoarele variabile:
int *n- parametru de iesire si reprezinta liniile matricei x;
int *m- parametru de iesire si reprezinta coloanele matricei x;
int x[30][30]- parametru de iesire si reprezinta matricea care are valoarea 0 pe diagonala secundara.
Secventa care realizeaza crearea matricei cu 0 pe diagonala secundara este urmatoarea:
printf("\n Matrix lines number :");
scanf("%d",n);
valid_l_c(n);
clrscr();
printf("\n Matrix column number:");
scanf("%d",m);
valid_square(m,*n);
clrscr();
printf("\n The matrix is:\n");
for(i=0;i<*n;i++)
for(j=0;j<*m;j++)
if (j!=*n-i-1)
else x[i][j]=0;
Īn clasa matrix, functia care realizeaza aceasta operatie se numeste creating_0_sec_diag(). Functia este declarata ca functie membra fara tip. Continutul functiei este acelasi cu cel al functie de mai sus, mai putin citirea numarului de linii si de coloane care sunt initializate īn momentul apelarii constructorului cu parametrii.
Functia void creating_0_up_sec_diag(int *n, int *m, int x[30][30]) creaza matricea cu 0 deasupra diagonalei secundare, restul elementelor matricei fiind citite de la tastatura. Functia primeste ca parametrii urmatoarele variabile:
int *n- parametru de iesire si reprezinta liniile matricei x;
int *m- parametru de iesire si reprezinta coloanele matricei x;
int x[30][30]- parametru de iesire si reprezinta matricea care are valoarea 0 deasupra diagonalei secundare.
Secventa care realizeaza crearea matricei cu 0 deasupra diagonalei secundare este urmatoarea:
printf("\n Matrix lines number :");
scanf("%d",n);
valid_l_c(n);
clrscr();
printf("\n Matrix column number:");
scanf("%d",m);
valid_square(m,*n);
clrscr();
printf("\n The matrix is:\n");
for(int i=0;i<*n;i++)
for(int j=0;j<*m;j++)
if (i+j>=*n-1)
else x[i][j]=0;
Dinamic, adica īn clasa matrix , functia care realizeaza aceasta operatie se numeste creating_0_up_sec_diag(). Continutul functiei este acelasi cu cel al functie de mai sus, mai putin citirea numarului de linii si de coloane deoarece se lucreaza cu obiecte si nu mai este necesara citirea lor.
Functia void creating_0_under_sec_diag(int *n, int *m, int x[30][30]) creaza matricea cu 0 sub diagonala secundara, restul elementelor matricei fiind citite de la tastatura. Functia primeste ca parametrii urmatoarele variabile:
int *n- parametru de iesire si reprezinta liniile matricei x;
int *m- parametru de iesire si reprezinta coloanele matricei x;
int x[30][30]- parametru de iesire si reprezinta matricea care are valoarea 0 sub diagonala secundara.
Secventa care realizeaza crearea matricei cu 0 sub diagonala secundara este urmatoarea:
printf("\n Matrix lines number :");
scanf("%d",n);
valid_l_c(n);
clrscr();
printf("\n Matrix column number:");
scanf("%d",m);
valid_square(m,*n);
clrscr();
printf("\n The matrix is:\n");
for(int i=0;i<*n;i++)
for(int j=0;j<*m;j++)
if (i+j<=*n-1)
else x[i][j]=0;
Dinamic, adica īn clasa matrix , functia care realizeaza aceasta operatie se numeste creating_0_under_sec_diag().Functia creating_0_under_sec_diag() este functie membra fara tip si are acelasi continut cu functia creating_0_under_sec_diag() din biblioteca matrice.h, mai putin citirea numarului de linii si de coloane. Initializarea este realizata prin apelarea constructorului cu parametrii.
Functia void creating_bool_matrix(int n, int m, int x[30][30], int b[30][30]) creaza matricea booleana. Matricea booleana este matricea ale carei elemente iau valori īn multimea .
Deci B=bij, unde i=1,n si j=1,m si bij=. Matricea booleana este asociata īntotdeauna unei alte matrice.
Functia primeste ca parametrii urmatoarele variabile:
int n- parametru de intrare si reprezinta liniile matricei x;
int m- parametru de intrare si reprezinta coloanele matricei x;
int x[30][30]- parametru de intrare si reprezinta matricea careia i se asociaza matricea booleana;
int b[30][30]- parametru de iesire si reprezinta matricea booleana asociata matricei x.
Secventa care realizeaza crearea matricei booleane este urmatoarea:
for (i=0;i<n;i++)
for(j=0;j<m;j++)
if (a[i][j]==0) b[i][j]=0;
else b[i][j]=1;
Īn clasa matrix matricea booleana este obtinuta cu ajutorul functiei membre fara tip creating_bool_matrix(matrix &). Functia primeste ca parametru de iesire un obiect de tip matrix care se transfera prin referinta. Parametrul de intrare este reprezentat de pionterul this caruia i se asociaza obiectul de tip matrix , matrice booleana. Functia este urmatoarea :
void matrix::creating_bool_matrix(matrix &b)
Dupa efectuarea operatiilor este foarte important sa vizualizam efectele create. Acesta se realizeaza cu ajutorul functiilor de iesire. Īn cazul de fata sunt realizate numai functii de iesire catre monitor. Exista functii de iesire care transmit informatia unei imprimante, unui fisier sau mai multor fisiere etc.
Afisarea pe ecran este obtinuta īn cazul lucrului īn mod static cu ajutorul functiei void show_matrix(int n,int m,int x[30][30]), īn timp ce īn modul de lucru dinamic( implementat īn clasa matrix) este realizat prin supraāncarcarea operatorului de shiftare la stānga "<<", care lucreaza acum la nivel de obiecte de tip matrix.
Functia show_matrix(n,m,x) afiseaza pe ecran matricea x. Ea are ca parametrii de intrare :
int n- numarul de linii;
int m- numarul de coloane;
int x[30][30]-matricea care este afisata.
Functia este urmatoarea:
int i,j;
printf("\n The matrix is:\n");
for (i=0;i<n;i++)
Daca avem de exemplu matricea de 3 linii si 3 coloane, care are elementele 1,2,3,4,5,6,7,8,9 dupa apelul acestei functii pe ecran sunt afisate urmatoarele:
The matrix is:
1 2 3
4 5 6
7 8 9
Operatorul de shiftare la stānga "<<" are ca efect exact acelasi mesaj ca si functia show_matrix. El a fost supraīncarcat ca functie prietena astfel:
ostream &operator<<(ostream &c,matrix a)
}
else cout<<"\nNothing to list !!!";
getch();
return c;
}
Calculul matriceal presupune existenta matricelor. Aceasta problema este rezolvata cu ajutorul functiilor de intrare. Pentru monitorizarea efectelor obtinute īn urma operatiilor realizate sunt foarte necesare functiile de iesire. De aceea functiile de intrare si iesire trebuie tratate cu toata seriozitatea de catre programatori.
|