Presentation is loading. Please wait.

Presentation is loading. Please wait.

Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM.

Similar presentations


Presentation on theme: "Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM."— Presentation transcript:

1 Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM I Vektorët dhe Matricat

2 Vektorët dhe Matricat Fushat – bashkësi e variablave të tipit të njëjtë të të dhënave Vektorë – fusha një-dimensionale Matrica – fusha dy-dimensionale Fusha shumëdimensionale

3 Vektorët Vektorët, siç e dimë janë një bashkësi elementesh (variablash) të tipit të njejtë, të ruajtur në mënyrë të njëpasnjëshme në memorje dhe çdo element identifikohet nga nje indeks. Kjo do të thotë që , nëse ruajmë 5 vlera te tipit integer në vektor, ne shmangim deklarimin individual të tyre me nga një identifikues per secilin. Indeksi i parë i vektorit është gjithmonë 0, pavarësisht nga gjatësia e vektorit .

4 Vektoret (vazhd.) Deklarimi i vektorit është: tipi emri [elementet];
Për shembull: int V [5]; Shënim: Fusha, elementet brenda kllapave [] kur deklaron një variabël duhet të jetë vlerë konstante, përderisa vektorët janë blloqe të memorjes statike me një madhësi të caktuar dhe kompajlleri duhet te jete ne gjendje të dije se sa memorje duhet ti kaloj këtij vektori.

5 Inicializimi i vektoreve
Kur deklarojmë një vektor lokal, nëse nuk e specifikojmë, nuk do te inicializohet, dhe vlerat e tij do te jenë të papërcaktuara deri ne momentin që ruajmë vlera në te. Nëse deklarojmë një variable globale, përmbajtja e tij do të inicializohet me vlerën 0. keshtu, nëse deklarojmë vektorin jashtë cdo funksioni(global):int V [5]; Cdo element i V do te inicializohet me 0:

6 Inicializimi i vektoreve
Por gjithsesi, kur edeklarojmë nje vektor, kemi mundësine të inicializojmë secilin prej tyre brenda kllapave{ }. Per shembull: int V [5] = { 16, 2, 77, 40, }; Numri i elementeve të inicializohet duhet te jetë i njëjte me gjatësine e elementeve të vektorit. Me anë te inicializimit mund të deklarojmë një vektor, pa percaktuar nje numër elementesh brenda kllapave katrore: int v [] = { 16, 2, 77, 40, };

7 Deklarimi dhe inicializimi i vektorëve - shembull
tipi Vektor[N] = {vlera0, vlera1, vlera2, … ,vlera(N-1)}; int a[5] = {1, 2, 3, 4, 5}; double b[3] = {2.3, 2.8, 4.5}; float c[4] = {2.56, 3.21, 8.55, 4.56} tipi Vektor[] = {vlera0, vlera1, vlera2, … ,vlera(N-1)}; int a[] = {1, 2, 3, 4, 5}; Deklarimi dhe inicializimi parcial i vektorëve int a[5] = {1, 2, 3}; double b[3] = {2.3, 2.8}; float c[4] = {2.56} int a[5] = {1, 2, 3, 0, 0}; double b[3] = {2.3, 2.8, 0}; float c[4] = {2.56, 0, 0, 0}

8 Matricat #include<iostream.h>  #define WIDTH 5 #define HEIGHT 3  int V [HEIGHT][WIDTH]; int n,m;  int main () { for (n=0;n<HEIGHT;n++) for (m=0;m<WIDTH;m++) V[n][m]=(n+1)*(m+1); } return 0; Matricat mund te pershkruhen si vektor vektoresh ose fusha dydimensionale. Deklarimi i tyre është : tip emer[dimension1][dimension2] int M [3][5];

9 Matricat Deklarimi i matricave (fusha dy-dimensionale)
tipi Matrica[m][n] m – numri i rreshtave të matricës n – numri i kolonave të matricës int a[5][4]; Variabla e matricës (a) – përmban referencë në elementin e parë të matricës Elemente të matricës Elementi i parë: a[0][0], Elementi i dytë: a[0][1], Elementi i fundit: a[m-1][n-1], Kolona (n=4) a a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3] a[3][0] a[3][1] a[3][2] a[3][3] a[4][0] a[4][1] a[4][2] a[4][3] Rreshta (m=5)

10 Deklarimi dhe inicializimi i matricave
tipi Matrica[m][n] = { {vlera, vlera, … ,vlera}, {vlera, vlera, … ,vlera}, … {vlera, vlera, … ,vlera} }; int a[3][4] = {{0,1,2,3},{1,2,3,4},{2,3,4,5}}; const m=5; int i,j,R[m][m]={{5,8,-2,6,1}, {3,-7,4,2,9}, {8,1,4,7,-2}, {-3,4,7,6,5}, {4,2,1,-3,5}}; int a[3][4] = { { }, { }, { } };

11 Vektoret si parametra Në ndonjë situate, duhet të kalojmë një vektor si parametër për funksionin. Ne C++ nuk është e mundur të kalosh me vlerë në bllok të tërë memorje si parametër për funksionin, por lejohet te kalohet vetëm me adresë. Per shembull nese kemi funksionin: void procedure (int arg[]) Nëse duam ti kalojmë një vektor këtij funksioni: int s [40]; Do te ishte e mjaftueshme te shkruanim nje thirrje te tille: procedure (s);

12 Vektoret si parametra #include <iostream.h>
void printarray (int arg[], int length) { for (int n=0; n<length; n++) cout << arg[n] << " "; cout << "\n"; } int main () { int firstarray[]={5, 10, 15}; int secondarray[]={2, 4, 6, 8, 10}; printarray (firstarray,3); printarray (secondarray,5); return 0; } Rezultati: Si parameter per nje funksion mund te kalohet edhe nje matrice.

13 Stringjet e karaktereve
Stringjet prezantojnë një radhë karakteresh, si fjalet, fjalite. Në C++ nuk ka një tip elemetar për ruajtur tipe stringjesh. Por mund të perdoren shume mir vektor të tipit char. Per shembull: char S [20]; - ruan një string deri ne 20 karakter të gjatë:

14 Stringjet e karaktereve
Ky maksimum prej 20 karakteresh nuk eshte e domosdoshme te plotesohet gjithmonë. Vektoret e karaktereve mund te ruajnë stringje më të shkurtër se totali i gjatësisë së vektorit, vendoset një karakter ne fund te stringut(null character) qe shkruhet 0 ose '\0'.

15 Inicializimi i stringjeve
Inicializimi bëhet njejt si te gjithë vektorët: char S[] = { 'H', 'e', 'l', 'l', 'o', '\0' }; Stringjet e karaktereve kanë një menyrë shtesë për të inicializuar vlerat e tyre - duke perdorur konstante stringjesh. Konstantet e stringjve brenda thonjezave dyshe kanë gjithmone karakterin null ('\0') që ngjitet automatikisht në fund. Per shembull char S [] = "Hello";

16 Inicializimi i strinjgeve
Në te dy rastet stringu S është deklaruar me 6 karaktere (elemente te tipit char): 5 karaktere të fjalës Hello dhe karakteri ('\0'). Instruksionet: S = "Hello"; S[] = "Hello"; S= { 'H', 'e', 'l', 'l', 'o', '\0' }; Nuk janë të vlefshme për vektoret sepse - Mund të japim vlera të konstanteve në një vektor, vetëm në momentin e inicializimit. Momenti i inicializimit të vektorit është një rast i vecantë, dhe nuk është vlerëdhënje megjithse paraqitet me shenjën (=).

17 Vleredhenia e stringjeve
Një mënyrë për ti dhënë vlerë një stringu është: s[0] = 'H'; s[1] = 'e'; s[2] = 'l'; s[3] = 'l'; s[4] = 'o'; s[5] = '\0'; Por sic shihet, kjo nuk është mënyrë praktike për tu përdorur.

18 Vlerëdhënia e stringjeve
Zakonisht për ti dhëëe vlera një vektori dhe në mënyrë të vecantë një stringu përdoren funksioni strcpy. (string copy) percaktohet te libraria cstring (string.h dhe thiret ne kete menyre): strcpy (string1, string2); Ky funksion kopjon përmbajtjen e stringut2 te string1. string2 mund të jeteë ose një vektor, një shenjues, apo një constant string. Për shembull strcpy (mystring, "Hello"); //kopjon “Hello” te stringu mystring

19 Vlerëdhënia e stringjeve
// dhenja e vleres ne string #include <iostream.h> #include <string.h>  int main () { char EmriIm [20]; strcpy (EmriIm,"J. Bajrami"); cout << EmriIm; return 0; } Rezultati: J.Bajrami

20 Vlerëdhënia e stringjeve
Një metodë tjetër për ti dhënë vlerë një vektori është duke përdorur (cin)- vlera e stringut jepet gjatë ekzekutimit nga perdoruesi . Kur cin perdoret me stringje karakteresh shoqerohet nga funksioni getline, që thirret sipas kësaj sintakse: cin.getline ( char buffer[], int length, char delimiter = ' \n'); - buffer - adresa ku do ruhet input (vektor), -length - gjatesia maksimale e buffer dhe - delimiter - karakteri që përdoret për të treguar fundin e input-it nga përdoruesi, by default eshte ('\n').

21 Vlerëdhënia e stringjeve
#include <iostream.h>  int main (){ char mybuffer [100]; cout << "Si quhesh? "; cin.getline (mybuffer,100); cout << "Miredita " << mybuffer << ".\n"; cout << "Kush eshte skuadra jote e preferuar? "; cout << "Pelqej " << mybuffer << " gjithashtu.\n"; return 0; }

22 Vlerëdhënia e stringjeve
cin>> - mund te perdoret gjithashtu per te mare te dhenat nga inputi standart. Kjo gjithashtu mund te perdoret ne vend te cin.getline me stringjet e karaktereve. cin >> mybuffer; Kjo punon, po ka limite krahasuar me cin.getline : Lexon vetem një fjalë (jo gjithe fjalinë) për aq kohë sa kjo mënyrë përdor për delimiter një hapsirë, tab, new_line. Nuk specifikon gjatësinë e buffer. Kjo e ben programin jo të rregullt kur perdoruesi fut të dhëna më shumë se sa vektori mund të mbaj. Rekomandohet të përdoret cin.getline sesa cin>> për input stringjesh.

23 Konvertimi i stringjeve ne tipe tjera
Për të konvertuar stringjet në tipe të tjera përdoren funksione te libraries cstdlib (stdlib.h): atoi: converton string ne int. atol: converton string ne long . atof: converton string ne float. Të gjithë këta pranojne një parameter dhe kthejnë një vlerë të tipit të caktuar(int, long apo float). Shembull:

24 Konvertimi i stringjeve ne tipe tjera
#include<iostream.h> #include <stdlib.h>  int main () { char mybuffer [100]; float cmimi; int sasia; cout << “Jepe cmimin: "; cin.getline (mybuffer,100); cmimi = atof (mybuffer); cout << “Jepe sasine: "; cin.getline (mybuffer,100); sasia = atoi (mybuffer); cout << “Cmimi total: " << cmimi*sasia; return 0; } Outputi eshte: Jepe cmimin: 2.75 Jepe sasine: 21 Cmimi total: 57.75

25 PYETJE?


Download ppt "Universiteti Shtetëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM."

Similar presentations


Ads by Google