You are on page 1of 46

FTI – Teknikat dhe gjuhët e programimit

Teknikat dhe Gjuhët e Programimit


(Leksioni nr. 5)

Fakulteti i Teknologjisë së Informacionit

Departamenti i Inxhinierisë Informatike 1 2020


Përmbajta
• Programimi pa vektorë
FTI – Teknikat dhe gjuhët e programimit

• Çfarë është një vektor


• Inicializimi i një vektori
• Memoria dhe Adresat
• Përdorimi i vektorëve
• Radhitja e vektorëve
• Shtimi dhe heqja e elementeve nga vektorët
• Vektorët shume dimensional

2020 Departamenti i Inxhinierisë Informatike 2


Programimi pa vektorë
#include <stdio.h>
FTI – Teknikat dhe gjuhët e programimit

int main(void){
int nr=0,n=10, s= 0L; float avg = 0.0f; /* Mesatarja */
/* Leximi i numrave per llogaritjen e mesatares */
for(int i = 0; i < n; i ++){
printf("Shkruani numrin [%d]: ", i+1);
scanf("%d", &nr);
s += nr;
}
avg = (float)s/n; /* Mesatarja */
printf("\nMesatarja e 10 numrave = %.2f\n", avg);
return 0;}

2020 Departamenti i Inxhinierisë Informatike 3


Programimi pa vektorë
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 4


Çfarë është një vektor
int numbers[10];
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 5


Çfarë është një vektor
#include <stdio.h>
FTI – Teknikat dhe gjuhët e programimit

int main(void){
int nr[10]; /* Vektor per 10 numra */
int n = 10; /* Numri i elementeve per lexim*/
long sum = 0L; /* Shuma e numrave*/
float avg = 0.0f; /* Mesatarja */
printf("\nShkruani 10 numrats:\n");
for(int i=0;i<n; i++){ /* Leximi i numrave nga tastjera*/
printf("%2d> ",i+1);
scanf("%d", &nr[i]);
sum += nr[i]; }
avg = (float)sum/n;
printf("\nMesatarja = %f\n", avg);
return 0;}
2020 Departamenti i Inxhinierisë Informatike 6
Çfarë është një vektor
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 7


Inicializimi i një vektori
double values[5] = { 1.5, 2.5, 3.5, 4.5, 5.5 };
FTI – Teknikat dhe gjuhët e programimit

// inicializim i plote

double values[5] = { 1.5, 2.5, 3.5 };


// inicializim i pjesshem

int primes[ ] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29};


// inicializim i papercaktuar

2020 Departamenti i Inxhinierisë Informatike 8


Memoria dhe Adresat
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 9


Memoria dhe Adresat
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 10


Përdorimi i vektorëve
Të ndërtohet një program i cili lexon nga tastiera një vektor me n element dhe
FTI – Teknikat dhe gjuhët e programimit

gjen elementet, vlera e te cilëve është shumëfish i 5. Këto elemente te afishohen


ne ekran se bashku me vlerat përkatëse te tyre si me poshtë:

V[i] = a, V[j] = b, V[k] = c......

2020 Departamenti i Inxhinierisë Informatike 11


Përdorimi i vektorëve
#include<stdio.h>
FTI – Teknikat dhe gjuhët e programimit

int main(){
int i, n, v[100];
printf("Jepni numrin e elementeve : ");
scanf("%d",&n);
for(i=0; i<n; i++){
printf("Jepni elementin v[%d]:",i+1);
scanf("%d",&v[i]);
}
printf("\n Rezultati \n");
for(i=0; i<n; i++){
if (v[i]%5==0)
printf("v[%d]=%d, ",i+1,v[i]);
}
return 0;}
2020 Departamenti i Inxhinierisë Informatike 12
Përdorimi i vektorëve
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 13


Përdorimi i vektorëve
Të ndërtohet një program i cili merr një vektor me n elemente nga
FTI – Teknikat dhe gjuhët e programimit

tastiera dhe kontrollon nëse vektori është simetrik me mesin e tij.

/*
Për të ndërtuar programin i cili llogarit kontrollon nëse një vektor është
simetrik me mesin e tij duhet te shikojmë nëse kemi ndonjë rast kur elementi i
është i ndryshëm me elementin n-i-1, ky cikël do të përsëritet n/2 here. Nëse
kushti nuk plotësohet njëherë do të thotë qe ky vektor nuk është simetrik, dhe do
të ndërpritet program.
*/

2020 Departamenti i Inxhinierisë Informatike 14


Përdorimi i vektorëve
#include <stdio.h>
FTI – Teknikat dhe gjuhët e programimit

int main(){
int n,i,s=0, v[100];
printf("\n Ju lutemi shkruani n:");
scanf("%d", &n);
for (i=0;i<n;i++){
printf("Shkruani elementin %d ",i);
scanf("%d", &v[i]);
}
for (i=0;i<n/2; i++) {
if (v[i]!=v[n-i-1]){
printf("\n Vektori nuk eshte i simetrik");
return 0; //nderpritet programi
}
}
printf("\n Vektori eshte i simetrik");
return 0;}

2020 Departamenti i Inxhinierisë Informatike 15


Përdorimi i vektorëve
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 16


Radhitja e vektorëve
• Bubble Sort
FTI – Teknikat dhe gjuhët e programimit

– Duke filluar nga elementi i parë deri tek elementi i parafundit bëhet krahasimi me
elementin pasardhës dhe nëse elementi pasardhës është më i vogël atëherë ndryshojnë
vendet. Kjo përsëritet n herë dhe në këtë rast kemi vektorin e radhitur.

• Selection Sort
– Duke filluar nga elementi i pare deri ne n elementi me i vogël vendoset elementin e pare.
Pas përfundimit të kontrollit të parë përsërisim të njëjtën gjë si më parë por duke nisur
nga elementi i 2,3..n-1.

• Insertion Sort
– Duke filluar nga elementi i dytë deri në të fundit krahasohet me elementet paraardhës dhe
nëse elementi në të majtë është më i madh ky i fundit spostohet në të djathtë. Kjo
përsëritet deri ne elementin e pare.

2020 Departamenti i Inxhinierisë Informatike 17


Bubble Sort

1 2 3 4 5 6
FTI – Teknikat dhe gjuhët e programimit

77 42 35 12 101 5

1 2 3 4 5 6
42Swap42
77 77 35 12 101 5

1 2 3 4 5 6
42 7735Swap35
77 12 101 5

2020 Departamenti i Inxhinierisë Informatike 18


Bubble Sort
1 2 3 4 5 6
12Swap12
77
FTI – Teknikat dhe gjuhët e programimit

42 35 77 101 5

1 2 3 4 5 6
42 35 12 77 101 5
Nuk ka zevendesim
1 2 3 4 5 6
42 35 12 77 5 Swap 101
101 5

1 2 3 4 5 6

42 35 12 77 5 101

Vlera me e madhe e vektorit


2020 Departamenti i Inxhinierisë Informatike 19
Bubble Sort

1 2 3 4 5 6
FTI – Teknikat dhe gjuhët e programimit

42 35 12 77 5 101
1 2 3 4 5 6
35 12 42 5 77 101
1 2 3 4 5 6
N-1

12 35 5 42 77 101
1 2 3 4 5 6
12 5 35 42 77 101
1 2 3 4 5 6
5 12 35 42 77 101

2020 Departamenti i Inxhinierisë Informatike 20


Bubble Sort
int i,j,k,temp,n;
FTI – Teknikat dhe gjuhët e programimit

int a[100];
for(i=1; i<n; i++){
for(j=0;j < n–1;j++){
if (a[j] > a[j+1]) {
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}

2020 Departamenti i Inxhinierisë Informatike 21


Bubble Sort
• Optimizimi i algoritmit
FTI – Teknikat dhe gjuhët e programimit

1 2 3 4 5 6
77 42 35 12 101 5
1 2 3 4 5 6
42 35 12 77 5 101
1 2 3 4 5 6
35 12 42 5 77 101
1 2 3 4 5 6
12 35 5 42 77 101
1 2 3 4 5 6
12 5 35 42 77 101

2020 Departamenti i Inxhinierisë Informatike 22


Selection Sort

7 2 8 5 4
FTI – Teknikat dhe gjuhët e programimit

2 7 8 5 4

2 4 8 5 7

2 4 5 8 7

2 4 5 7 8

2020 Departamenti i Inxhinierisë Informatike 23


Selection Sort
int i,j,temp,n;
FTI – Teknikat dhe gjuhët e programimit

int a[100];
for(i=0;i< n–1;i++){
for(j=i+1;j < n;j++){
if (a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}

2020 Departamenti i Inxhinierisë Informatike 24


Insertion Sort
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 25


Insertion Sort
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 26


Insertion Sort
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 27


Insertion Sort
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 28


Insertion Sort
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 29


Insertion Sort
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 30


Insertion Sort
int i,j, k, n;
FTI – Teknikat dhe gjuhët e programimit

int a[100];
for(j=1;j < n;j++)
{
k=a[j];
for(i=j–1;i>=0 && k<a[i];i--){
a[i+1]=a[i];
}
a[i+1]=k;
}

2020 Departamenti i Inxhinierisë Informatike 31


Shtimi dhe heqja e elementeve nga vektorët
• Shtimi i një elementi në vektor
FTI – Teknikat dhe gjuhët e programimit

– Për të shtuar një element në një vektor me n element në pozicionin p, fillimisht duke
filluar nga elementi i fundit deri te elementi p vlerën e indeksit përkatës e kalojmë ne
elementin pasardhës.
– Pas përfundimit të ciklit vendosim në pozicionin p vlerën përkatëse, numri i elementeve
shkon ne +1

• Heqja e elementit nga vektori


– Për të hequr një element nga vektori në pozicionin p duhet që nga elementi p+1 deri në
elementin e fundin duhet kalojnë në pozicionin paraardhës te tij.
– Numri i elementeve zbret me -1

2020 Departamenti i Inxhinierisë Informatike 32


Shtimi i një elementi në vektor
int A[],int n, int p, int elementi;
FTI – Teknikat dhe gjuhët e programimit

int j;
for (j = n; j > p; j--){
A[j] = A[j-1];
}
A[p] = elementi;
n++;

2020 Departamenti i Inxhinierisë Informatike 33


Heqja e elementit nga vektori
int A[],int n, int p;
FTI – Teknikat dhe gjuhët e programimit

int j;
for (j = p; j < n-1; j++)
A[j] = A[j+1];
n--;

2020 Departamenti i Inxhinierisë Informatike 34


Shembull përdorimi i vektorit
• Të ndërtohet një program i cili me një numër n dhe gjeneron n element të
FTI – Teknikat dhe gjuhët e programimit

rastësishëm të numrave të plotë dhe i vendos në një vektor. Të gjendet


elementi më i madh i vektorit dhe më pas e heq nga vektori. Të afishohet
vektori i gjeneruar para heqjes së maksimumit, pas heqjes së maksimumit dhe
më pas të radhitet në rend ritës.

2020 Departamenti i Inxhinierisë Informatike 35


Shembull përdorimi i vektorit
#include <stdio.h>
FTI – Teknikat dhe gjuhët e programimit

#include <stdlib.h>
#include <time.h>
int main(){
int i,j,n,max, pmax,v[100];
printf("Jepni numrin n: "); scanf("%d",&n);
//gjenerimi i numrave random;
srand(time(0));
for(i=0;i<n;i++)
v[i]=rand()%1000; //kufizon gjenerimin e numrave nga 0-999
printf("Printimi i vektorit i gjeneruar\n");
for(i=0;i<n;i++)
printf("%d ",v[i]);

2020 Departamenti i Inxhinierisë Informatike 36


Shembull përdorimi i vektorit
max=v[0]; //fillimisht merret elementi 0 per maksimum
pmax=0; //pozicioni i elementit maksimal
FTI – Teknikat dhe gjuhët e programimit

for(i=1;i<n;i++){
if (v[i]>max){
pmax=i;
max=v[i];}
}
printf("\nMaksimumi i vektorit eshte elementi v[%d]=%d",pmax, max);
//heqja e elementit ne pozicionin pmax
for(i=pmax;i<n-1;i++){
v[i]=v[i+1];
}
n--;

2020 Departamenti i Inxhinierisë Informatike 37


Shembull përdorimi i vektorit
//rradhitja
int temp;
FTI – Teknikat dhe gjuhët e programimit

for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if (v[i]>v[j]){
temp=v[i];
v[i]=v[j];
v[j]=temp;}
}
}
printf("\nPrintimi i vektorit i gjeneruar\n");
for(i=0;i<n;i++)
printf("%d ",v[i]);

return 0;
}

2020 Departamenti i Inxhinierisë Informatike 38


Shembull përdorimi i vektorit
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 39


Vektorët shume dimensional
float nr[3][5];
FTI – Teknikat dhe gjuhët e programimit

int v[100][20];

2020 Departamenti i Inxhinierisë Informatike 40


Vektorët shume dimensional
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 41


Vektorët shume dimensional
int nr[3][4] = {
{10,20,30,40}, /* Reshti i pare */
FTI – Teknikat dhe gjuhët e programimit

{15,25,35,45}, /* Reshti i dyte */


{47,48,49,50} /* Reshti i trete*/
};

int n[2][3][4] = {
{ /* Blloku i pare */
{ 10, 20, 30, 40 },
{ 15, 25, 35, 45 },
{ 47, 48, 49, 50 }
},
{ /* Blloku i dyte*/
{ 10, 20, 30, 40 },
{ 15, 25, 35, 45 },
{ 47, 48, 49, 50 }
}
};

2020 Departamenti i Inxhinierisë Informatike 42


Shembull vektorët shume dimensional
Të ndërtohet një program i cili lexon nga tastiera një matrice me
FTI – Teknikat dhe gjuhët e programimit

mxn elemente dhe gjen shumën e elementeve ku vlera absolute e


tyre është e barabartë me prodhimin e indekseve të tyre
përkatëse. Shuma e gjetur të afishohet ne ekran.

/*
Per te ndertuar programin mund qe te perdorim dy
cikle me ane te cileve duhet te kontrollojme te
gjithe elementet e matrices me permasa mxn, nese
plotësohet kushti u abs(m[i][j])=i*j. ne rast se ky
kusht plotësohet atehere ky element do te perfshihet
ne llogaritjen e shumes.
*/

2020 Departamenti i Inxhinierisë Informatike 43


Shembull vektorët shume dimensional
#include <stdio.h>
FTI – Teknikat dhe gjuhët e programimit

#include <stdlib.h> // per funksionin abs


int main(){ //deklarimet
int n,m,i,j, s=0;
int v[100][100]; //deklarojme matricen me 100x100 element
printf("Ju lutemi shkruani nr rreshtave:");
scanf("%d", &m);
printf("Ju lutemi shkruani nr kolonave:");
scanf("%d", &n);

//Cikli for per i=0 deri ne m, per lexim

2020 Departamenti i Inxhinierisë Informatike 44


Shembull vektorët shume dimensional
for (i=0;i<m;i++){//Cikli for per j=0 deri ne n, per rreshtin i
FTI – Teknikat dhe gjuhët e programimit

for (j=0;j<n;j++){
printf("Elementi M[%d][%d] :",i,j);
scanf("%d", &v[i][j]);}
}
// llogaritja e shumes
for (i=0;i<m;i++){ //Cikli for per i=0 deri ne m, per cdo rresht
for (j=0;j<n;j++){//Cikli for per j=0 deri ne n, per rreshtin i
if (abs(v[i][j])==i*j) // kontrolli i kushti abs(v[i][j])=i*j
s=s+v[i][j];}
}
printf("\n Shuma = %d",s);
return 0;
}
2020 Departamenti i Inxhinierisë Informatike 45
Shembull vektorët shume dimensional
FTI – Teknikat dhe gjuhët e programimit

2020 Departamenti i Inxhinierisë Informatike 46

You might also like