Documente Academic
Documente Profesional
Documente Cultură
1. Scopul lucrarii
2. Breviar teoretic
Tablouri bidimensionale
Declararea matricelor
Definiţie:
Un tablou este o colecţie de date de acelaşi tip, memorate într-o zonă continuă
de memorie.
Un tablou care conţine două sau mai multe linii şi două sau mai multe coloane,
poartă numele de tablou bidimensional sau matrice.
tip nume[număr_linii][număr_coloane]
unde:
tip poate fi orice tip din C
nume este un identificator C reprezintă numele tabloului
numar_linii este o expresie constantă întreagă pozitivă, reprezentând numărul
de linii ale tabloului
numar_coloane este o expresie constantă întreagă pozitivă, reprezentând
numărul de coloane ale tabloului.
Accesarea elementelor unui tablou bidimensional
Fiecare element al tabloului bidimensional este bine determinat de doi indici:
indicele de linie şi indicele de coloană.
Indicele de linie este o expresie întreagă pozitivă şi poate lua valori în
intervalul [0 , număr_linii - 1] .
Indicele de coloană este o expresie întreagă pozitivă şi poate lua valori în
intervalul [0 , număr_coloane - 1].
Exemplu:
Dacă dorim să utilizăm o matrice cu trei linii şi două coloane, cu elemente
numere întregi cu numele a vom declara:
int a[3][2];
a coloana 0 coloana 1
linia 0 a[0][0] a[0][1]
linia 1 a[1][0] a[1][1]
linia 2 a[2][0] a[2][1]
a[1][0]=3.
Citirea matricei:
Definiţie:
O matrice cu proprietatea că numărul de linii este egal cu numărul de coloane
se numeşte matrice pătratică
Şiruri de caractere
char cuvant[15];
este un tablou unidimensional (vector), care poate memora 15 elemente de tip char.
Acesta poate fi reprezentat în memorie astfel:
cuvant
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include <iostream>
using namespace std;
int main()
{char cuvant[15],i;
cout<<"introduceti cuvantul:";
for(i=0;i<11;i++)
{cin>>cuvant[i];}
cout<<"cuvantul citit:";
for(i=0;i<11;i++)
cout<<cuvant[i];
return 0;
}
Putem reprezenta memorarea variabilei cuvânt astfel:
cuvant
p r o g r a m a t o r
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
cuvant
p r o g r a m a t o r 0
0 1 2 3 4 5 6 7 8 9 10 11
cuvant
p r o g r a m a t o r 0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
În acest caz am memorat un vector de 15 octeţi, mai mulţi decât sunt necesari.
Ultimii trei octeţi rămân neutilizaţi.
Citirea şi afişarea şirurilor de caractere
#include <iostream>
using namespace std;
int main()
{char cuvant[15];
//citeste un sir de caractere
cout<<"introduceti cuvantul:"; cin>>cuvant;
//afiseaza sirul de caractere de la primul octet pana la întalnirea caract. nul
cout<<"cuvantul citit:"; cout<<cuvant;
return 0;
}
cuvant
p r o g r a m a t o r 0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Un vector care conţine un şir de caractere citit sau iniţializat în modul anterior
prezentat, poate fi adresat pe componente, în mod normal. De exemplu
cuvant[0]=’p’, cunvant[1]=’r’, ş.a.m.d.
Din nefericire, cu ajutorul funcţiei cin nu putem citi şiruri de cractere care
conţin spaţii sau alte caractere albe.
Funcţia cin procedează astfel la citirea unui şir de caractere:
Se sar toate caracterele albe
Se citeste şirul care începe cu primul caracter care nu este alb
Citirea se încheie la întâlnirea primului caracter alb.
Exemplu
Pentru şirul introdus de la tastatură: “invatam despre siruri de caractere”,
programul de mai sus va afişa doar “invatam”.
Pentru citirea şirurilor de caractere care conţin cuvinte separate prin spaţii sau
alte caractere albe vom folosi funcţia cin.get().
Formatul funcţiei:
cin.get(nume_sir, int nr, char=’\n’)
unde:
nume_sir – reprezintă identificatorul şirului de caractere
nr - reprezintă numărul de caractere care se vor citi împreună cu caracterul
terminal nul.
Al treilea parametru desemnează caracterul la întâlnirea căruia se opreşte
citirea şirului (valoarea lui implicită este ‘\n’), prin urmare în cazul în care
nu dorim ca citirea sa se termine cu un alt cracter diferit de ’\n’, acest
parametru poate să lipsească.
Funcţia cin.get citeşte caractere pâna când este îndeplinită una din conditiile: fie s-
au citit nr-1 caractere fie a întâlnit caracterul specificat de parametrul al
treilea.
int main()
{char sir[50];
cout<<"introduceti cuvantul:";
cin.get(sir,40); //citeste maximum 40 de caractere sau se termina la <enter>
cout<<"cuvantul citit:";
cout<<sir;
return 0;
}
În C pot exista mai multe funcţii cu acelaşi nume dar care diferă între ele prin
numărul parametrilor, cu acţiuni diferite. (această modalitate de utilizare a funcţiilor
poartă numele de supraîncarcarea funcţiilor).
Există încă o implementare a funcţiei cin.get() fară parametri. În acest caz
funcţia citeşte un singur caracter alb sau nu.
Observaţie
3. Desfasurarea lucrarii
Se vor edita si apoi executa programele descrise mai jos. La fiecare program
in parte se vor opera modificarile necesare pentru a raspunde la intrebarile ce
insotesc fiecare program.
1. Realizati un program care sa afiseze produsul a doua matrici.
Organigrama
#include <iostream>
using namespace std;
int main()
{
int m, n, p, q, i, j, k, sum = 0;
int first[10][10], second[10][10], multiply[10][10];
cout << "Introduceti numarul de linii si de coloane al primei matrici:\n";
cin >> m >> n;
cout << "Introduceti numarul de linii si de coloane al celei de a doua matrici:\n";
cin >> p >> q;
if (n != p)
cout << "Produsul nu se poate realiza! Ordinul matricilor este eronat! \n";
else
{ cout << "Introduceti elementele primei matrici:\n";
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
cin >> first[i][j];
cout << "Introduceti elementele celei de a doua matrici:\n";
for (i = 0; i < p; i++)
for (j = 0; j < q; j++)
cin >> second[i][j];
for (i = 0; i < m; i++) {
for (j = 0; j < q; j++) {
multiply[i][j]=0;
for (k = 0; k < p; k++) {
multiply[i][j] = multiply[i][j] + first[i][k]*second[k][j];
}
}
}
cout << "Produsul matricilor introduse este:-\n";
//printf("Product of entered matrices:-\n");
for (i = 0; i < m; i++) {
for (j = 0; j < q; j++)
cout << "\t" << multiply[i][j] ;
cout << "\n" << endl;
}
}
return 0;
}
Exemplu:
Intrebari:
Exemplu:
int main()
{
char str1[25],str2[25];
int i=0,j=0;
cout << "\nIntroduceti primul sir: ";
cin >> str1;
cout << "\nIntroduceti al doilea sir: ";
cin >> str2;
while(str1[i]!='\0')
i++;
while(str2[j]!='\0')
{
str1[i]=str2[j];
j++;
i++;
}
str1[i]='\0';
cout << "\nSirurile concatenate sunt: " << str1 << endl;
return 0;
}
Intrebari: