210 likes | 794 Views
Universiteti Shtet ëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM I Ligjerata 7 fisnik.dalipi @ unite.edu.mk fisnikd.wordpress.com. Vektoret.
E N D
UniversitetiShtetëror i TetovësFakulteti i Shkencave Matematike-NatyroreDepartamenti i InformatikësPROGRAMIM ILigjerata 7fisnik.dalipi@unite.edu.mkfisnikd.wordpress.com
Vektoret • Vektoret, sic e dime jane nje bashkesi elementesh (variablash) te te njejtit tip, te ruajtur ne menyre te njepasnjeshem ne memorje dhe cdo element identifikohet nga nje indeks. • Kjo do te thote qe , nese ruajme 5 vlera te tipit integer ne vektor, ne shmangim deklarimin individual te tyre me nga nje identifikues per secilin. • Indeksi i pare i vektorit eshte gjithmone0, pavaresisht nga gjatesia e vektorit . Mr. Fisnik Dalipi
Vektoret (vazhd.) • Deklarimi i vektorit eshte: tipi emri [elementet]; • Per shembull: int V [5]; • Shenim: Fusha elementet brenda kllapave [] kur deklaron nje variable duhet te jete vlere konstante, perderisa vektoret jane blloqe te memorjes statike me nje madhesi te caktuar dhe kompilatori duhet te jete ne gjendje te dije se sa memorje duhet ti kaloj ketij vektori. Mr. Fisnik Dalipi
Inicializimi i vektoreve • Kur deklarojme nje vektor lokal, nese nuk e specifikojme, nuk do te inicializohet, dhe vlerat e tij do te jene te papercaktuara deri ne momentin qe ruajme vlera ne te. • Nese deklarojme nje variable global, permbajtja e tij do te inicializohet me vleren 0. keshtu, nese deklarojme vektorin jashte cdo funksioni(global):int V [5]; • Cdo element i V do te inicializohet me 0: Mr. Fisnik Dalipi
Inicializimi i vektoreve • Por gjithsesi, kur edeklarojme je vektor, kemi mundesine te inicializojme secilin prej tyre brenda kllapave{ }. Per shembull: • int V [5] = { 16, 2, 77, 40, 12071 }; • Numri i elementeve te inicializohet duhet te jete i njejte me gjatesine e elementeve te vektorit. • Me ane te inicializimit mund te deklarojme nje vektor, pa percaktuar nje numer elementesh brenda kllapave katrore: • int v [] = { 16, 2, 77, 40, 12071 }; Mr. Fisnik Dalipi
Vektoret dydimensional • Vektoret dy dimensional mund te pershkruhen si vektor vektoresh. • Deklarimi i tyre eshte : • tip emer[dimension1][dimension2] • int M [3][5]; • #include<iostream.h> • #define WIDTH 5 • #define HEIGHT 3 • intV [HEIGHT][WIDTH]; • intn,m; • intmain () • { • for (n=0;n<HEIGHT;n++) • for (m=0;m<WIDTH;m++) • { • V[n][m]=(n+1)*(m+1); • } • return 0; • } Mr. Fisnik Dalipi
Vektoret si parametra • Ne ndonje situate, duhet te kalojme nje vektor si parameter per funksionin. Ne C++ nuk eshte e mundur te kalosh me vlere nje bllok te tere memorje si parameter per funksionin, por lejohet te kalohet vetem me adrese. Per shembull nese kemi funksionin: • void procedure (int arg[]) • Nese duam ti kalojme nje vektor ketij funksioni: int s [40]; • Do te ishte e mjaftueshme te shkruanim nje thirrje te tille: • procedure (s); Mr. Fisnik Dalipi
Vektoret si parametra • #include <iostream.h> void printarray (intarg[], int length) { for (int n=0; n<length; n++) cout<< arg[n] << " "; cout<< "\n"; } • int main () { intfirstarray[]={5, 10, 15}; intsecondarray[]={2, 4, 6, 8, 10}; printarray(firstarray,3); printarray (secondarray,5); return 0; } Rezultati:5 10 152 4 6 8 10 Si parameter per nje funksion mund te kalohet edhe nje matrice. Mr. Fisnik Dalipi
Stringjet e karaktereve • Stringjet prezantojne nje radhe karakteresh, si fjalet, fjalite. • In C++ nuk ka nje tip elemetar per ruajtur tipe stringjesh. Por mund te perdoren shume mire vektor te tipit char. Per shembull: • char S [20]; • ruan nje string deri ne 20 karakter te gjate: Mr. Fisnik Dalipi
Stringjet e karaktereve • Ky maksimum prej 20 karakteresh nuk eshte e domosdoshme te plotesohet gjithmone. Keshtu qe, perderisa vektoret e karaktereve mund te ruajne stringje me te shkurter se totali i gjatesise se vektorit, vendoset nje karakter ne fund te stringut(null character) qe shkruhet 0 ose '\0'. Mr. Fisnik Dalipi
Inicializimi i stringjeve • Inicializimibehetnjesoj sit e gjithevektoret: • char S[] = { 'H', 'e', 'l', 'l', 'o', '\0' }; • Gjithashtu, stringjet e karakterevekanenjemenyreshtese per teinicializuarvlerat e tyre duke perdorurkonstantestringjesh. • Konstantet e stringjvebrendathonjezavedyshekanegjithmonekarakterin null ('\0') qengjitetautomatikisht ne fund. Per shembull • char S [] = "Hello"; Mr. Fisnik Dalipi
Inicializimi i strinjgeve • Ne te dy rastet stringu S eshte deklaruar me 6 karaktere (elemente te tipit char): 5 karaktere te fjales Hello dhe karakteri ('\0'). • Instruksionet: • S = "Hello";S[] = "Hello"; • S= { 'H', 'e', 'l', 'l', 'o', '\0' }; • Nuk jane te vlefshme per vektoret sepse • Mund te japim vlera te konstanteve ne nje vektor, vetem ne momentin e inicializimit. Momenti i inicializimit te vektorit eshte nje rast i vecante, dhe nuk eshte vlerdhenje megjithse paraqitet me shenjen (=). Mr. Fisnik Dalipi
Vleredhenia e stringjeve • Nje menyre per ti dhene vlere nje stringu eshte: • s[0] = 'H';s[1] = 'e';s[2] = 'l';s[3] = 'l';s[4] = 'o';s[5] = '\0'; • Por sic shihet, kjo nuk eshte menyre praktike per tu perdorur. Mr. Fisnik Dalipi
Vleredhenia e stringjeve • Zakonisht per ti dhene vlera nje vektori dhe ne menyre te vecante nje stringu perdoren funksione strcpy. strcpy (string copy) percaktohet te libraria cstring (string.hdhe thiret ne kete menyre: • strcpy (string1, string2); • Ky funksion kopjon permbajtjen e stringut2 te string1. string2 mund te jete ose nje vektor, nje shenjues, apo nje constant string. Per shembull • strcpy (mystring, "Hello"); //kopjon “Hello” te stringu mystring Mr. Fisnik Dalipi
Vleredhenia 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 Mr. Fisnik Dalipi
Vleredhenia e stringjeve • Nje metode tjeter per ti dhene vlere nje vektori eshte duke perdorur (cin). Ne kete rast vlera e stringut jepet gjate ekzekutimit nga perdoruesi . • Kur cin perdoret me stringje karakteresh shoqerohet nga funksioni getline, qe thirret sipas kesaj sintakse: • cin.getline ( char buffer[], int length, char delimiter = ' \n'); • Ku buffer eshte adresa ku do ruhet input (vektor), length eshte gjatesia maksimale e buffer dhe delimiter eshte karakteri qe perdoret per te treguar fundin e input-it nga perdoruesi, qe by default eshte ('\n'). Mr. Fisnik Dalipi
Vleredhenia e stringjeve #include <iostream.h> • intmain (){ • char mybuffer [100]; • cout<< "Si quhesh? "; • cin.getline(mybuffer,100); • cout<< "Miredita " << mybuffer << ".\n"; • cout<< "Kush eshteskuadrajote e preferuar? "; • cin.getline(mybuffer,100); • cout<< "Pelqej " << mybuffer << " gjithashtu.\n"; • return 0; • } Mr. Fisnik Dalipi
Vleredhenia 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 nje fjale (jo gjithe fjaline) per aq kohe sa kjo menyre perdor per delimiter nje hapsire, tab, new_line. • Nuk specifikon gjatesine e buffer. Kjo e ben programin jot e rregullt kur perdoruesi fut te dhena me shume se sa vektori mund te mbaj. • Prandaj eshte me e rekomandueshme te perdoresh cin.getline sesa cin>> per input stringjesh. Mr. Fisnik Dalipi
Konvertimi i stringjeve ne tipe tjera • Per tekonvertuarstringjet ne tipetetjeraperdorenfunksionete libraries cstdlib (stdlib.h) Si me poshte: • atoi:converton string ne int. • atol:converton string ne long . • atof:converton string ne float. • Tegjitheketapranojnenje parameter dhekthejnenjevleretetipittecaktuar(int, long apo float). Shembull: Mr. Fisnik Dalipi
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 Mr. Fisnik Dalipi