You are on page 1of 293

Universiteti i Prishtins

Fakulteti i Inxhinieris Elektrike dhe Kompjuterike

Agni H. Dika

Prishtin 2007

Libri t cilin e keni n dor s pari u dedikohet studentve t


Fakultetit t Inxhinieris Elektrike dhe Kompjuterike n Prishtin. Por, ai
mund t prdoret edhe nga t interesuar tjer pr programim me
kompjuter.
Njsit msimore n libr jan organizuar ashtu q materiali i
prfshir brenda tyre t jet sa m i afrt pr t gjith ata t cilt fillojn t
punojn me kompjuter. Pr kt qllim, gjat shpjegimit t algoritmeve
jan shfrytzuar shembuj t ndryshm, duke filluar nga ato elementare.
N libr, do algoritmi i shoqrohet edhe programi prkats i
shkruar n gjuhn programuese C++, ashtu q prmes ekzekutimit n
kompjuter, t jet edhe m i qart funksionimi i tyre. Lexuesit t cilt nuk
kan njohuri mbi gjuhn programuese C++, pa asnj penges mund t'i
kaprcejn programet q paraqiten n libr.
Autori

Paraqitja analitike 2
Paraqitja grafike 4
Testimi i algoritmeve 7
Prcjellja n kompjuter 9

2 Algoritmet

Grumbulli i veprimeve me nj radh t fiksuar, t cilt ndrmerren gjat


zgjidhjes s nj problemi t caktuar, quhet algoritm.
N jetn e prditshme, pr zgjidhjen e problemeve t ndryshme, njeriu krijon
algoritme prkatse, duke shfrytzuar dijen e grumbulluar. Por, me koh,
algoritmet q prsriten fiksohen n ndrdije dhe sipas nevojs shfrytzohen si t
gatshme. Kshtu, p.sh., ardhja para rrugkryqit, do kmbsori i imponon
prdorimin e algoritmit, i cili mund t prshkruhet prmes tekstit t dhn n
Fig.1.1.
Nse n rrugkryq sht vendosur semafori
dhe ai punon, rruga mund t kalohet n
vendkalim pasi t paraqitet ngjyra e
gjelbr. Nse n rrugkryq nuk ka semafor,
ose ai nuk punon, rruga mund t kalohet n
vendkalim kur nuk ka automjete, duke shikuar
majtas dhe djathtas.
Fig.1.1 Algoritmi logjik pr kalimin e rrugkryqit
Varsisht nga operacionet q prdoren gjat prpilimit, algoritmet mund t
grupohen n algoritme logjike dhe algoritme numerike. Derisa algoritmet
logjike mbshteten n operacione dhe konkluzione logjike, ashtu si shihet n
shembullin e algoritmit t dhn m sipr, n algoritmet numerike shfrytzohen
operacionet dhe shprehjet aritmetikore.

Paraqitja analitike
N form m t lir, paraqitja analitike e algoritmeve duket ashtu si sht
dhn n shembullin e algoritmit pr kalimin e rrugkryqit, n Fig.1.1. Kjo form
e paraqitjes s algoritmeve, nse prdoret gjat zgjidhjes s problemeve t
komplikuara, mund t jet e paqart dhe e paprcaktuar plotsisht.
N praktik prdoret forma analitike e paraqitjes s algoritmeve e shprehur
prmes nj numri hapash, t cilt kryhen sipas nj radhe t fiksuar plotsisht.
Kshtu, shembulli i algoritmit t dhn n Fig.1.1, i paraqitur n 10 hapa, do t
duket si n Fig.1.2.

Paraqitja e algoritmeve 3
1.
2.

Fillimi
A ka semafor?
Nse JO, hapi i 6.
3. A punon semafori?
Nse JO, hapi i 6.
4. A sht paraqitur ngjyra e gjelbr?
Nse PO, hapi i 9.
5. Duhet pritur. Hapi i 4.
6. Shiko majtas e djathtas
7. A ka automjete?
Nse JO, hapi i 9.
8. Duhet pritur. Hapi i 6.
9. Kalo rrugn n vendkalim
10. Fundi.
Fig.1.2 Forma analitike e algoritmit pr kalimin e rrugkryqit
Hapat e veant t ktij algoritmi kryhen me radh prej fillimi, derisa nuk
urdhrohet kaprcimi n nj hap t caktuar. Kshtu, p.sh., nse n rrugkryq ka
semafor dhe paraqitet ngjyra e gjelbr, vargu i hapave npr t cilt do t kalohet
gjat ekzekutimit t algoritmit t dhn sht: 1, 2, 3, 4, 9 dhe 10. Por, n
kushtet e kulturs s komunikacionit n hapsirat tona, kur shpesh ndodh q
automjetet e kalojn rrugkryqin kur n semafor sht e ndezur drita e kuqe, m
e sigurt pr kmbsorin sht nse hapi i katrt i algoritmit shkruhet kshtu:
4.

A sht paraqitur ngjyra e gjelbr?


Nse PO, hapi i 6.

ashtu q para se t kalohet rrugkryqi, pavarsisht se pr kmbsor sht


paraqitur ngjyra e gjelbr, duhet t shikohet mos ndoshta kalon ndonj automjet.
Kshtu, pr rastin e prmendur m sipr, kur n rrugkryq ka semafor dhe sht
paraqitur ngjyra e gjelbr, vargu i hapave npr t cilt kalohet sht: 1, 2, 3, 4,
6, 7, 9 dhe 10.
Tek algaritmet numerike hapat e veant jan m t qart, sepse konsistojn
n operacione dhe n shprehje matematikore.

4 Algoritmet
Shembull

Algoritmi numerik pr llogaritjen e vlers s funksionit:


x2

y = 2x
x 3

pr x < 0.9
pr x = 0.9
pr x > 0.9

nse dihet vlera e variabls x.


1.
2.
3.

4.
5.
6.
7.
8.

Fillimi.
Merre vlern e variabls x
A sht x<0.9, ose x=0.9, ose x>0.9?
Nse x<0.9, hapi i 4.
Nse x=0.9, hapi i 5.
Nse x>0.9, hapi i 6.
y=x2. Hapi i 7.
y=2x. Hapi i 7.
y=x-3. Hapi i 7.
Shtype vlern e variabls y
Fundi.
Fig.1.3 Algoritmi numerik

Algoritmi i dhn sht shkruar duke pasur parasysh zgjidhjen e ktij


problemi me kompjuter, gj q vlen edhe pr t gjith algoritmet t cilat jan
dhn n pjesn vijuese t librit. Gjat ekzekutimit t ktij algoritmi, nse pr
variabln x merret vlera 4.7, do t kalohet npr hapat: 1, 2, 3, 6, 7 dhe 8.
Tek algoritmet e prbra paraqitja e detajizuar e hapave t veant t
algoritmit e komplikon shum dhe e bn t paqart strukturn logjike t
algoritmit. Prandaj, si zgjidhje imponohet nevoja e paraqitjes s algoritmit n disa
hapa t prgjithsuar, prkatsisht t prpilimit t algoritmit t prgjithsuar. Pastaj,
pr do hap t veant, mund t prpilohet edhe algoritmi i detajizuar.

Paraqitja grafike
Gjat paraqitjes analitike t algoritmeve, nse kemi t bjm edhe me
algoritme relativisht t komplikuara, vshtir se mund t ndiqet rrjedhja e
procesit llogarits. N praktik, algoritmet paraqiten prmes skemave grafike, pr
vizatimin e t cilave prdoren disa figura gjeometrike, prkatsisht blloqe t formave t
ndryshme.
Forma gjeometrike e blloqeve q shfrytzohen gjat prpilimit t skemave
grafike e tregon edhe natyrn e operacioneve q kryhen brenda tyre. Disa nga

Paraqitja e algoritmeve 5
blloqet elementare q prdoren gjat vizatimit t skemave grafike jan dhn n
Fig.1.4.

Blloku

Prdorimi

Fillimi

Tregon fillimin e algoritmit


Lexohen vlerat e variablave t shnuara
n bllok
Shtypen vlerat e variablave t shnuara
n bllok
Kryhen veprimet ose llogaritjet, duke
shfrytzuar shprehjet e shnuara n bllok

ose

Fundi

Prcaktohet degzimi i veprimeve t


mtejme, duke pasur parasysh kushtet e
shnuara n bllok

Tregon fundin e algoritmit

Fig.1.4 Blloqet elementare


Me leximin e vlerave t variablave t shnuara n bllok nnkuptohet marrja e
vlerave prkatse prmes njsis hyrse dhe vendosja e tyre n kujtesn e
kompjuterit. Kurse prmes shtypjes vlerat e variablave merren nga kujtesa e
kompjuterit dhe shtypen n njsin dalse t tij.
Skemat grafike t vizatuara duke shfrytzuar blloqe t formave t ndryshme,
shpesh quhen edhe bllok-diagrame, si do t quhen edhe n pjesn vijuese t librit.
Shembull

Algoritmi pr llogaritjen e siprfaqes s dhe perimetrit p t


katrkndshit knddrejt, me brinjt a dhe b.

6 Algoritmet
a. Forma analitike
1.
2.
3.
4.
5.
6.

Fillimi.
Merri vlerat e brinjve: a, b
s=ab
p=2(a+b)
Shtypi vlerat e llogaritura: s, p
Fundi.
Fig.1.5

b. Forma grafike
Fillimi

a,b

s=ab

p=2(a+b)

s,p

Fundi

Fig.1.6
Shembull

Bllok-diagrami i algoritmit pr kalimin e rrugkryqit, i cili u


dha n form analitike n Fig.1.2.

Paraqitja e algoritmeve 7
Fillimi

1
8

A ka semafor
Po

2
3

Jo

Duhet
pritur

Jo

A punon semafori

Shiko majtas
e djathtas

Po
Duhet
pritur

6
Po

7
A ka automjete

A sht paraqitur
drita e gjelbr

Jo

Jo

Po
Kalo rrugn n vendkalim
Fundi

10

Fig.1.7 Bllok-diagrami i algoritmit pr kalimin e rrugkryqit


Nga shembujt e dhn shihet se paraqitja e algoritmeve prmes bllokdiagrameve jep nj dukshmri shum m t madhe t veprimeve q kryhen
brenda blloqeve, si dhe n krejt algoritmin.

Testimi i algoritmeve
Me qllim t kontrollimit t saktsis s funksionimit t algoritmeve q
prpilohen, duhet t bhet testimi i tyre, duke marr vetm vlerat me t cilat
prfshihen t gjitha rastet e mundshme t shfrytzimit t tyre. N kt mnyr,
me pun minimale vrtetohet sjellja reale e algoritmeve para prdorimit praktik
t tyre.
Shembull

Testimi i algoritmit numerik t dhn n Fig.1.3, duke e


prpiluar fillimisht bllok-diagramin prkats.

8 Algoritmet
a. Bllok-diagrami

<

Fillimi

2
>

x <>- 0.9

=
y=x2

y=2x

Fundi

y=x-3

Fig.1.8
Me qllim q testimi i bllok-diagramit t rrjedh me nj procedur standarde,
mund t shfrytzohet nj tabel pr testim, p.sh., si ajo q sht dhn n Fig.1.9.
b. Testimi - pr x=4.7
Urdhri

Vlerat numerike
merren

Hapi

Blloku

Fillimi

2
3
4

2
3
6

Lexo: x
Prej njsis hyrse
Pyet:x0.9 x 2
y=x-3
x 2

Shtyp: y

Fundi

y 3
-

Rezultati
Fillimi i
algoritmit
x=4.7
>
y=4.7-3=1.7
Shtypet
numri 1.7
Fundi i
algoritmit

Fig.1.9
N tabel, me shkurtesat x2 dhe y3 duhet nnkuptuar se vlera
numerike e variabls x merret nga hapi i 2, kurse ajo e variabls y - nga hapi i 3.
Gjithnj, mes Fillimit dhe Fundit t algoritmit, gjegjsisht bllok-diagramit,
ekziston nj rrug e mbyllur, e cila, varsisht nga vlerat hyrse, kalon npr pjes t
ndryshme t bllok-diagramit, ose nj numr t ndryshm hersh n pjes t
caktuara t tij.

Paraqitja e algoritmeve 9
c. Rruga - pr x=4.7

1
2
3

7
8

Fig.1.10
Testimi i algoritmit do t jet komplet vetm nse, duke kaluar npr t
gjitha rrugt e mundshme, vrtetohet funksionimi i sakt i tij.
Algoritmet npr blloqet e bllok-diagramit prkats t t cilve mund t
kalohet vetm njher, p.sh. si ai q sht dhn n Fig.1.6, quhen algoritme
lineare. Kurse, algoritmet te bllok-diagramet e t cilve paraqiten m shum deg,
p.sh. ashtu si sht ai i dhn n Fig.1.8, quhen algoritme t degzuara.

Prcjellja n kompjuter
Prkthimi i algoritmeve n nj form t kuptueshme pr kompjuterin bhet
duke i shkruar programet prkatse n nj gjuh programuese. Meq aktualisht njra ndr
gjuht programuese m t popullarizuara sht gjuha C, prkatsisht versioni i saj
C++, n pjesn vijuese t librit, prve paraqitjeve grafike t algoritmeve, do t
jepen edhe programet prkatse n kt gjuh.
Shembull

Programi i cili sht shkruar n baz t bllok-diagramit t


dhn n Fig.1.8.

10 Algoritmet
// Programi Prg1_8
#include <iostream>
using namespace std;
int main()
{
double x,y;
cout << "Vlera e variabls x=";
cin >> x;
if (x < 0.9)
y=x*x;
else
if (x == 0.9)
y=2*x;
else
y=x-3;
cout << "Rezultati y="
<< y
<< "\n";
return 0;
}

Gjat ekzekutimit t programit, nse pas mesazhit:


Vlera e variabls x=
prmes tastiers kompjuterit i jepet vlera 4.7, n ekran do t shtypet vlera e
variabls y, kshtu:
Rezultati y=1.7
gj q i prgjigjet vlers s fituar n tabeln e Fig.1.9.

Shumat e zakonshme 12
Shumat e fardoshme 20

12 Algoritmet

Gjat zgjidhjeve t problemeve t ndryshme, shpesh her nevojitet t


mblidhen antart e nj serie numrash. N matematik kjo mbledhje realizohet
duke shtuar nj nga nj antart e seris, gj q mund t shfrytzohet edhe gjat
zgjidhjes s ktij problemi me kompjuter. Pr shtimin automatik t antarve t
seris, n algoritm duhet t shfrytzohet nj unaz e mbyllur, para s cils vlera
fillestare e shums merret zero.

Shumat e zakonshme
Si raste m t thjeshta t llogaritjes s shumave merren mbledhjet e numrave
natyror, katrorve ose kubeve t ktyre numrave, numrave natyror tek ose ift
etj.
Shembull

Shuma e numrave natyror mes 3 dhe n, nse sht dhn


vlera e variabls n.

s = 3 + 4 + ... + n =

i=3

Llogaritja e shums 13
a. Bllok-diagrami

Po

b. Rruga - pr n=5
Fillimi

s=0

i=3

s=s+i

i=i+1

i n
Jo
s

Fundi

Fig.2.1

Fig.2.2

N bllok-diagram sht shfrytzuar shprehja i=i+1, gj q sht e


palogjikshme n matematik. Por, ktu me shprehjen e barazimit kompjuterit i
urdhrohet:
Llogarite vlern numerike t shprehjes n ann e
djatht dhe jepja variabls n ann e majt t
barazimit!
Nga kjo shihet se me shprehjen i=i+1 s pari variabla i rritet pr 1 dhe
pastaj rezultati i fituar ruhet prsri te kjo variabl, prkatsisht me shprehjen e
dhn kompjuteri e nnkupton rritjen pr 1 t vlers s variabls i.
Algoritmet, si ai q sht dhn prmes bllok-diagramit n Fig.2.1, te t cilt
pjes t caktuara t tyre prsriten brenda nj unaze t mbyllur, quhen algoritme
ciklike. Prfundimi i cikleve t prsritjes s unazs, prcaktohet me kushtin pr
dalje nga unaza, i cili n shembullin konkret, lidhet me raportin e vlerave t
variablave i dhe n. Kshtu, n momentin kur plotsohet kushti i>n, prsritja e
ekzekutimit t unazs ndrpritet, prkatsisht dilet nga unaza.

14 Algoritmet
c. Testimi - pr n=5
Urdhri

Vlerat numerike
merren

Hapi

Blloku

Fillimi

Lexo: n

3
4
5
6
7
8
9
10
11
12
13

3
4
5
6
7
5
6
7
5
6
7

s=0
i=3
s=s+i
i=i+1
Pyet:in
s=s+i
i=i+1
Pyet:in
s=s+i
i=i+1
Pyet:in

prej njsis
hyrse
s 3, i 4
i 4
i 6, n 2
s 5, i 6
i 6
i 9, n 2
s 8, i 9
i 9
i 12, n 2

14

Shtyp:s

s 11

15

Fundi

Rezultati
Fillimi i
algoritmit
n=5
s=0
i=3
s=0+3=3
i=3+1=4
Po
s=3+4=7
i=4+1=5
Po
s=7+5=12
i=5+1=6
Jo
Shtypet numri
12
Fundi i
algoritmit

Fig.2.3
Vlera numerike e nj variable, e cila nevojitet n nj hap t caktuar, merret n
hapin ku ajo variabl takohet s pari, nse kthehemi pas n rrugn e kaluar.
Kshtu, p.sh., n tabeln e Fig.2.3, vlerat e variablave s dhe i n hapin e 11 jan
marr nga hapat 8 e 9, sepse, nse prej hapit t 11 kthehemi pas, n kolonn e
fundit t tabels, variabla i s pari takohet n hapin e 9, kurse variabla s - n
hapin e 8. Shigjeta e cila prdoret pr t treguar se n cilin hap merren vlerat
e nevojshme numerike, duhet t lexohet prej hapit.
Gjat testimit n tabeln e msiprme, shtimi i antarve t seris s numrave
natyror, n hapat e veant rrjedh ashtu si sht treguar n Fig.2.4.

Llogaritja e shums 15

Vlera fillestare(3)
s = 0 + 3 + 4 + 5
5
8
11

Fig.2.4
d. Programi
// Programi Prg2_1
#include <iostream>
using namespace std;

int main()
{
int n,i;
double s;
cout << "Vlera e variabls n=";
cin >> n;
s=0;
i=3;
do
{
s=s+i;
i=i+1;
}
while (i<=n);
cout << "Shuma e numrave natyror s="
<< s
<< "\n";
return 0;
}

Nse programi ekzekutohet pr n=5, rezultati q shtypet n ekran sht:


Shuma e numrave natyror s=12
gj q prputhet me rezultatin i cili sht fituar gjat testimit prmes tabels n
Fig.2.3.
Antart e vargut mund t jen numra me nj ligjshmri t caktuar,
prkatsisht nuk do t thot se mes vete duhet t dallohen pr vlern 1. Pr
gjetjen e shums s antarve t vargjeve t tilla shfrytzohen algoritme t

16 Algoritmet
ngjashme me ato q u dhan m sipr, duke pasur kujdes vetm n ligjshmrin e
gjenerimit t antarve t vargut.
Shembull

Shuma e kubeve t numrave natyror ift mes 2 dhe n, nse


sht dhn vlera e variabls n.

s = 23 + 43 + ... =

i3

i=2
(ift)

a. Bllok-diagrami

b. Rruga - pr n=9

Fillimi
n
s=0
i=2
s=s+i3
i=i+2
Po

i n
Jo
s
Fundi

Fig.2.5
Rezultati q fitohet gjat rrugs s kaluar sht:
vlera fillestare

s = 0 + 23 + 43 + 63 + 83 = 800

Fig.2.6

Llogaritja e shums 17
c. Programi
// Programi Prg2_5
#include <iostream>
using namespace std;

int main()
{
int n,i;
double s;
cout << "Vlera e variabls n=";
cin >> n;
s=0;
i=2;
do
{
s=s+i*i*i;
i=i+2;
}
while (i<=n);
cout << "Shuma s="
<< s
<< "\n";
return 0;
}

Pas ekzekutimit t programit t dhn pr n=9, si rezultat n ekran do t


shtypet:
Shuma s=800
ashtu si u tregua m sipr.
Detyra

T llogaritet shuma:
a.
b.
c.
d.

e numrave natyror ift mes 2 dhe n;


e numrave natyror tek mes 1 dhe n;
e katrorve t numrave natyror mes 4 dhe n;
e rrnjve katrore t numrave natyror tek mes 3
dhe n,

nse dihet vlera e variabls n.

18 Algoritmet
Shprehjet e shumave prkatse do t duken:
a.
s = 2 + 4 + 6 + ... =

i=2
(ift)

b.
n

s = 1 + 3 + 5 + ... = i

i=1
(tek)

c.
s = 42 + 52 + 62 + ... + n2 =

i2

i =4

d.
n

s = 3 + 5 + 7 + ... = i
i =3
(tek)

Antart e serive mund t formohen edhe duke shfrytzuar ligjshmri m


komplekse t raporteve t numrave natyror.
Shembull

Shuma e prodhimit t numrave natyror tek e ift - t


njpasnjshm, mes vlerave 1 dhe n, nse dihet vlera e
variabls n.

s = 1 2 + 3 4 + 5 6 + ... =

i (i + 1)

i =1
(tek)

Llogaritja e shums 19
a. Bllok-diagrami

b. Rruga - pr n=8
Fillimi
n
s=0
i=1

s=s+i(i+1)
i=i+2
Po

i n
Jo
s
Fundi

Fig.2.7

Fig.2.8

Shuma q fitohet gjat rrugs s kaluar, pr n=8 sht:


s = 1 2 + 3 4 + 5 6 + 7 8 = 100

Detyra

T llogaritet shuma:
a. e pjestimit t numrave natyror tek me katrort e
numrave natyror ift - t njpasnjshm, mes vlerave 1 dhe
n;
b. e katrorve t numrave natyror tek dhe e kubeve t
numrave natyror ift - t njpasnjshm, mes vlerave 1 dhe
n,
nse dihet vlera e variabls n.

20 Algoritmet
Shprehjet e shumave t krkuara duken:
a.
s=

1
2

3
2

5
62

+ ...

b.
s = 12 + 23 + 32 + 43 + ...

Shumat e fardoshme
Antart e serive numerike mund t formohen si shprehje t fardoshme
matematikore. Procedurat e gjetjes s shumave t tyre nuk do t ndryshojn
aspak nga ato q u dhan m sipr.
Shembull

Llogaritja e vlers s shums:

s =

n +1

2i +

3
i=2

(i 4)

nse dihen vlerat e variablave n dhe x.

Llogaritja e shums 21
a. Bllok-diagrami

b. Rruga - pr x=1 dhe n=5

Fillimi
x,n
s=0
i=2
Jo

i 4
Po

s = s + 2i +

2
x

i=i+1
Po

i(n+1)
Jo
s
Fundi

Fig.2.9

Fig.2.10

Vlera e shums, q fitohet gjat rrugs s kaluar n Fig.2.10, sht:


2

1
1
1
1

s = 2 2 + + 2 3 + + 2 5 + + 2 6 + = 317.778
3
3
3
3

c. Programi

// Programi Prg2_9
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int n,i;
double x,s;

22 Algoritmet

cout << "Vlerat hyrse x dhe n: ";


cin >> x
>> n;
s=0;
i=2;
do
{
if (i!=4)
s=s+pow(2*i+x/3,2);
i=i+1;
}
while (i<=n+1);
cout << "Shuma s="
<< s
<< "\n";
return 0;
}

Nse programi ekzekutohet pr vlerat hyrse x=1 dhe n=5, si rezultat do t


shtypet:

Shuma s=317.778
ashtu si u fitua edhe gjat llogaritjes me dor.
Nga krejt kjo q u dha m sipr, si prfundim mund t nxirret se n rastin e
prgjithshm, gjat llogaritjes s shums, shprehja pr llogaritjen e shums
brenda unazs s mbyllur shkruhet:
s=s+(shprehja nn simbolin e shums)
Detyra

T llogariten shumat:
a.
n +1

y = {x + 2k 1}3 2
k =1

b.
z =

i +

2n

i=2
(ift)

Llogaritja e shums 23
c.
g =

n +2

j= 1
(j 3,4,5)

j3

2j + 3

nse dihen vlerat e variablave n dhe x.


Gjat vizatimit t bllok-diagrameve prkats, duhet pasur parasysh shprehjet
e zbrthyera t shumave t dhna, t cilat duken:
a.
y = {x + 2 1 1}3 2 + {x + 2 2 1}3 2 + ... + {x + 2 (n + 1) 1}3 2

b.
2

2
4
2n

z = 2 + + 4 + + ... + 2n +

3
3
3

c.
13

g =

2 1 + 3

23

2 2 + 3

63

2 6 + 3

+ ...

Shumat mund t paraqiten edhe brenda shprehjeve t funksioneve t


ndyshme. Gjat ksaj, s pari llogariten vlerat e shumave dhe pastaj, duke
shfrytzuar kto vlera, llogariten edhe vlerat e funksioneve.
Shembull

Llogaritja e vlers s funksionit:


i3

x m+n1 2
y = + 2 x +
3
i
i=1

nse dihen vlerat e variablave m, n dhe x.

24 Algoritmet
a. Bllok-diagrami

b. Rruga - pr x=1, m=3, n=1


Fillimi

s=

x,m,n

m +n+1

2
i

x +

i =1

i 3

s=0
i=1

s = s + x +

i3
2

i=i+1
Po
i(m+n-1)
Jo

y=

x
+ 2s
3
y

Fundi

Fig.2.11

Fig.2.12

Pr vlerat hyrse q jan marr si shembull gjat vizatimit t rrugs n


Fig.2.12, vlera e llogaritur e funksionit sht:
y =

13
23
33

1
2
2
2

+ 1 +
+ 1 +
+ 2 1 +
3
1
2
3

c. Programi

// Programi Prg2_11
#include <iostream>
#include <cmath>
using namespace std;

int main()
{

Llogaritja e shums 25

int m,n,i;
double x,s,y;
cout << "Vlerat hyrse x,m dhe n: ";
cin >> x
>> m
>> n;
s=0;
i=1;
do
{
s=s+pow(x+2./i,i/3.);
i=i+1;
}
while (i<=m+n-1);
y=x/3+2*s;
cout << "Vlera e funksionit y="
<< y
<< "\n";
return 0;
}

Nse pas ekzekutimit t programit, si vlera hyrse prmes tastiers


kompjuterit i jepen vlerat x=1, m=3 dhe n=1, rezultati q shtypet n ekran
sht:

Vlera e funksionit y=9.72597


Shuma mund t paraqitet edhe te funksionet t cilat prcaktohen prmes m
shum shprehjeve.
Shembull

Llogaritja e vlers s funksionit:


n +1

2
2x + 3 {j + 2x}

j= 1
y =

3x2 + 2x 1

pr x 4.55

pr x > 4.55

nse dihen vlerat e variablave n dhe x.

26 Algoritmet

a. Bllok-diagrami
Fillimi
n,x
Po

x4.55

Jo

s=0
j=1
n +1

s = {j + 2x}
j=1

s=s+{j+2x}2
j=j+1
Po
j(n+1)
Jo
y=3x2+2x-1

y=2x+3s
y
Fundi

Fig.2.13
Nga bllok-diagrami i dhn n Fig.2.13 shihet se ktu prve strukturs
algoritmike t degzuar, n njrn deg t algoritmit paraqitet edhe struktur
algoritmike ciklike. Pr t qen algoritmi m i sakt, vlera e variabls n do t duhej
t lexohet n degn e majt t bllokut pr degzim.

Llogaritja e shums 27
b. Rruga - pr n=3 dhe x=3.5

Fig.2.14
c. Programi

// Programi Prg2_13
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int n,j;
double x,y,s;
cout << "Vlerat hyrse n dhe x: ";
cin >> n
>> x;
if (x<=4.55)
{
s=0;

28 Algoritmet

j=1;
do
{
s=s+pow(j+2*x,2);
j=j+1;
}
while (j<=n+1);
y=2*x+3*s;
}
else
y=3*pow(x,2)+2*x-1;
cout << "Vlera e funksionit y="
<< y
<< "\n";
return 0;
}

Nse programi i dhn ekzekutohet pr vlerat hyrse n=3 dhe x=3.5, si


rezultat n ekran do t shtypet:

Vlera e funksionit y=1105


Detyra

T llogariten vlerat e funksioneve:


a.
n +1

}x b

y = ax2 bx + 4 i2 + 2a
i =3

b.
z =

x
3x
+ n +3
a
{m + 2i}a
i=2
(ift)

c.
2x2 + 3x 4

g=
+m
x2 2n
3k + k2

k =2

pr x + 2 > a + 1

pr x + 2 a + 1

nse dihen vlerat e variablave a, b, m, n dhe x.


Brenda shprehjes s nj funksioni, njkohsisht mund t paraqiten disa
shuma, t cilat duhet t llogariten para se kompjuterit t'i urdhrohet llogaritja e
vlers s funksionit.
Shembull
Llogaritja e vlers s funksionit:

Llogaritja e shums 29

y =

m
m +2 i
x

+ 3 (2i + b) 4 b
2
a

i =1
i=2

nse dihen m, a dhe b.


a. Bllok-diagrami

b. Rruga - pr m=2, a=2, b=3, x=4

Fillimi

(2i + b )

d=

x,a,b,m

i=1

d=0
i=1
d=d+(2i+b)
i=i+1
Po
i m
Jo
e=0
i=2
i

e = e + b
a

i=i+1
Po

y=

i m+2
Jo
x
+ 3d - 4e
2

e=

m+2

i
a
i = 2

Fundi

Fig.2.15
Fig.2.16
Vlera e funksionit, e cila llogaritet gjat rrugs s kaluar m sipr, sht:

30 Algoritmet

y =

4
2
4

+ 3 {(2 1 + 3) + (2 2 + 3)} 4 3 + 3 + 3
2
2
2
2

c. Programi

// Programi Prg2_15
#include <iostream>
using namespace std;

int main()
{
int m,i;
double a,b,x,y,d,e;
cout << "Vlerat hyrse x,a,b dhe m: ";
cin >> x
>> a
>> b
>> m;
d=0;
i=1;
do
{
d=d+(2*i+b);
i=i+1;
}
while (i<=m);
e=0;
i=2;
do
{
e=e+(i/a-b);
i=i+1;
}
while (i<=m+2);
y=x/3+3*d-4*e;
cout << "Vlera e funksionit y="
<< y
<< "\n";
return 0;
}

Nse programi ekzekutohet pr vlerat e variablave t cilat jan shfrytzuar


gjat testimit t bllok-diagramit, rezultati q shtypet n ekran sht:

Vlera e funksionit y=55.3333


Funksioni mund t ket m shum vlera, nse n shprehjen e shums, e cila
merr pjes n funksion, figurojn parametra q ndryshojn.

Llogaritja e shums 31

Shembull

Llogaritja e vlers s funksionit:


m +1

g = 2m 3 (ki + b)
i=2

pr k = 1,2,..., m

nse jan dhn vlerat e variablave m dhe b.


b. Rruga - pr m=2 dhe b=3.5

a. Bllok-diagrami
Fillimi
m,b
k=1

m +1

s = (k i + b )
i=2

s=0
i=2

s=s+(ki+b)
i=i+1
Po
i(m+1)
Jo
g=2m-3s
k,g
k=k+1
Po

k m
Jo
Fundi

Fig.2.17
Vlerat q llogariten gjat rrugs s kaluar jan:

Fig.2.18

32 Algoritmet

k = 1

g = 2 2 3 {(1 2 + 3.5) + (1 3 + 3.5)}

k = 2

g = 22 3

{(2

2 + 3.5) + (2 3 + 3.5)}

c. Programi

// Programi Prg2_17
#include <iostream>
using namespace std;

int main()
{
int m,k,i;
double b,s,g;
cout << "Vlerat hyrse b dhe m: ";
cin >> b
>> m;
for (k=1;k<=m;k++)
{
s=0;
for (i=2;i<=m+1;i++)
s=s+(k*i+b);
g=2*m-3*s;
cout << "k="
<< k
<< "
g="
<< g
<< "\n";
}
return 0;
}

Pr vlerat hyrse m=2 dhe b=3.5, pas ekzekutimit t programit, si rezultat


n ekran shtypen dy vlera, kshtu:

k=1
k=2

g=-32
g=-47

sepse komanda cout, e cila gjendet brenda unazs s variabls k, ekzekutohet


vetm dy her, gj q shihet edhe gjat testimit t bllok-diagramit n Fig.2.18.

Prodhimet e zakonshme 34
Prodhimet e fardoshme 37

34 Algoritmet

Prodhimi i antarve t nj serie numerike gjendet ngjajshm si edhe shuma e


tyre. Por, pr dallim nga shuma, gjat llogaritjes s prodhimit vlera fillestare
merret 1, kurse brenda unazs s mbyllur n rast t prgjithshm shkruhet:
p=p(shprehja nn simbolin e prodhimit)

Prodhimet e zakonshme
Prodhimet elementare t cilat takohen n praktik jan ato t llogaritjes s
prodhimit t numrave natyror, katrorve ose kubeve t tyre, prodhimit t
numrave natyror tek ose ift etj.
Shembull

Prodhimi i numrave natyror mes 2 dhe n, nse sht dhn


vlera e variabls n.

p = 2 3 4 5 ... n =

i=2

Llogaritja e prodhimit 35
a. Bllok-diagrami

b. Rruga - pr n=3
Fillimi

p=1

i=2

p=pi

i=i+1

i n
Jo
p

Fundi

Po

Fig.3.1

Fig.3.2

c. Testimi - pr n=3
Hapi

Blloku

Urdhri

Fillimi

Lexo: n

3
4
5
6
7
8
9
10
11

3
4
5
6
7
5
6
7
8

p=1
i=2
p=p i
i=i+1
Pyet:in
p=p i
i=i+1
Pyet:in
Shtyp:p

12

Fundi

Vlerat numerike
merren
prej njsis
hyrse
p 3, i 4
i 4
i 6, n 2
p 5, i 6
i 6
i 9, n 2
p 8
-

Fig.3.3

Rezultati
Fillimi i
algoritmit
n=3
p=1
i=2
p=1 2=2
i=2+1=3
Po
p=2 3=6
i=3+1=4
Jo
Shtypet numri 6
Fundi i
algoritmit

36 Algoritmet
Llogaritja e vlers s prodhimit, n hapat e veant t testimit, rrjedh kshtu:

Vlera fillestare(3)
p = 1 2 3
5
8

Fig.3.4
d. Programi
// Programi Prg3_1
#include <iostream>
using namespace std;

int main()
{
int n,i;
double p;
cout << "Vlera e variabls n=";
cin >> n;
p=1;
i=2;
do
{
p=p*i;
i=i+1;
}
while (i<=n);
cout << "Prodhimi p="
<< p
<< "\n";
return 0;
}

Nse gjat ekzekutimit t programit, prmes tastiers kompjuterit i jepet


vlera n=3, rezultati q shtypet n ekran sht:
Prodhimi p=6
gj q fitohet edhe gjat testimit t algoritmit, ashtu si sht treguar n Fig.3.4.

Llogaritja e prodhimit 37
Detyra

T llogaritet prodhimi:
a. i numrave natyror ift mes 4 dhe n;
b. i katrorve t numrave natyror tek mes 3 dhe n;
c. i shums s numrave natyror tek e ift - t
njpasnjshm mes 1 dhe n;
d. i katrorve t numrave natyror tek dhe i kubeve t
numrave natyror ift - t njpasnjshm mes 1 dhe n,
nse dihet vlera e variabls n.

Shprehjet e prodhimeve t krkuara duken kshtu:


a.

p = 4 6 8 ...

b.
p = 32 52 72 ...

c.

p =(1 + 2)(3 + 4)(5 + 6)...

d.
p = 12 23 32 43 ...

Prodhimet e fardoshme
Procedura q zbatohet gjat llogaritjes s prodhimit t antarve t serive t
fardoshme, sht e ngjashme me ate q prdoret pr llogaritjen e shums s
serive prkatse.
Shembull

Llogaritja e vlers numerike t shprehjes:


g = 3x + 4

m +1

i +

i=2
(ift)

nse jan dhn vlerat e variablave m dhe x.

a. Bllok-diagrami

b. Rruga - pr m=8 dhe x=1.5

38 Algoritmet

Fillimi
x,m
p=1
i=2
2

p = p i +
x

i=i+2
Po

i(m+1)
Jo
g=3x+4p
g
Fundi

Fig.3.5

Fig.3.6

Vlera q llogaritet gjat rrugs s kaluar sht:


2
2
2
2

g = 3 1.5 + 4 2 +
4 +
6 +
8 +

1.5
1.5
1.5
1.5

c. Programi
// Programi Prg3_5
#include <iostream>
using namespace std;

int main()
{
int m,i;
double x,p,g;
cout << "Vlerat hyrse x dhe m: ";
cin >> x
>> m;

Llogaritja e prodhimit 39
p=1;
i=2;
do
{
p=p*(i+2/x);
i=i+2;
}
while (i<=m+1);
g=3*x+4*p;
cout << "Vlera e funksionit g="
<< g
<< "\n";
return 0;
}

Pr vlerat hyrse x=1.5 dhe m=8, rezultati q shtypet n ekran sht:


Vlera e funksionit g=4871.66
Prodhimi, njlloj si edhe shuma, mund t paraqitet brenda shprehjeve te
funksioneve t cilat prcaktohen me m shum shprehje.
Shembull

Llogaritja e vlers numerike t funksionit:


2x + 3n 1

x 2n +2 k 2 + x

d=
3
k=1

2x
e + 3

pr x > n + 2
pr x < n + 2

pr x = n + 2

nse jan dhn vlerat e variablave n dhe x.

a. Bllok-diagrami

40 Algoritmet

Fillimi
n,x
<

<- (n+2)
>

>

=
p=1
k=1
x

p = p k2 +
3

k=k+1
Po
k(n+2)
Jo
d=x-2p

d=e2x+3

d=2x+3n-1

d
Fundi

Fig.3.7
Versioni m i sakt i bllok-diagramit mund t vizatohet duke e vendosur
bllokun pr leximin e variabls n n degn e majt t degzimit q sht
vendosur n fillim t tij, sepse variabla n fjal shfrytzohet vetm n kt pjes.

b. Rruga - pr n=2 dhe x=3

Llogaritja e prodhimit 41

Fig.3.8
c. Programi
// Programi Prg3_7
#include <iostream>

#include <cmath>
using namespace std;

int main()
{
int n,k;
double x,p,d;
cout << "Vlerat hyrse n dhe x: ";
cin >> n
>> x;
if (x<(n+2))
{

42 Algoritmet
p=1;
for (k=1;k<=n+2;k++)
p=p*(k*k+x/3);
d=x-2*p;
}
else
if (x==n+2)
d=exp(2*x)+3;
else
d=2*x+3*n-1;
cout << "Rezultati d="
<< d
<< "\n";
return 0;
}

Nse programi i dhn ekzekutohet pr vlerat hyrse n=2 dhe x=3, n ekran
do t shtypet:
Rezultati d=-3397
Brenda shprehjes s nj funksioni mund t paraqiten edhe m shum
prodhime t antarve t serive, t cilat duhet t llogariten para se prej
kompjuterit t krkohet llogaritja e vlers s vet funksionit.
Shembull

Llogaritja e vlers s funksionit:


m +1

m +n

i =1

i=2
(ift)

z = 3a + 2 (2i + a)

(i + b)

nse jan dhn vlerat e variablave m, n, a dhe b.

Llogaritja e prodhimit 43
a. Bllok-diagrami

b. Rruga - pr m=2, n=7, a=3 dhe b=1


Fillimi
m,n,a,b
e=1
i=1
e=e(2i+a)
i=i+1

Po
i(m+1)
Jo
f=1
i=2

f=f(i+b)
i=i+2
Po

i(m+n)
Jo
z=3x+2e-f
z
Fundi

Fig.3.9

Fig. 3.10

44 Algoritmet
Vlera e funksionit, e cila llogaritet gjat rrugs s kaluar n Fig.3.10, sht:
z = 3 3 + 2 {(2 1 + 3) (2 2 + 3) (2 3 + 3)}
e
{(2 + 1) (4 + 1) (6 + 1) (8 + 1)}
f

c. Programi
// Programi Prg3_9
#include <iostream>
using namespace std;

int main()
{
int m,n,i;
double a,b,e,f,z;
cout << "Vlerat hyrse m,n,a dhe b: ";
cin >> m
>> n
>> a
>> b;
e=1;
for (i=1;i<=m+1;i++)
e=e*(2*i+a);
f=1;
i=2;
do
{
f=f*(i+b);
i=i+2;
}
while (i<=m+n);
z=3*a+2*e-f;
cout << "Vlera e funksionit z="
<< z
<< "\n";
return 0;
}

Nse programi ekzekutohet pr vlerat e variablave hyrse, t cilat jan


shfrytzuar gjat vizatimit t rrugs s kaluar, si rezultat n ekran shtypet:
Vlera e funksionit z=-306
Detyra

T llogariten vlerat e funksioneve:

Llogaritja e prodhimit 45
a.
y =

m+n
x
+ 2 {k + 3x}a 2
2
k =1
(k 3)

b.
m

g = 3 {x + 2j}2
j= 2

1
n

(k + 1)

k =2

c.
n
pr x 2 + 1 7
(i + 3)
i=2
(ift)
t=

m +2
x
2
2 4 (2i + 1) pr x + 1 > 7
i=1

nse jan dhn vlerat e variablave m, n dhe x.

48 Algoritmet

Brenda shprehjeve t funksioneve mund t paraqiten njkohsisht shuma dhe


prodhime t antarve t serive. N kto raste, llogaritja rrjedh plotsisht njlloj
si edhe kur n shprehje paraqiten disa shuma ose disa prodhime.
Shembull

Llogaritja e vlers numerike t shprehjes:


y =

n
m+n
x
+ 3 (2i + n) 2 (k + x)
2
i =1
k =2
(tek)

nse jan dhn vlerat e variablave m, n dhe x.

a. Bllok-diagrami

b. Rruga - pr m=2, n=3 dhe x=1


Fillimi
m,n,x
s=0
i=1

s=s+(2i+n)
i=i+2
Po
i(m+n)
Jo
A

Shuma dhe prodhimi 49

p=1
k=2

p=p(k+x)
k=k+1
Po

k n
Jo
y=

x
+ 3s 2p
2
y
Fundi

Fig.4.1

Fig.4.2

Vlera q llogaritet gjat rrugs s kaluar n Fig.4.2 sht:


y =

1
+ 3 {(2 1 + 3) + (2 3 + 3) + (2 5 + 3)}
2
2 {(2 + 1) (3 + 1)}

c. Programi
// Programi Prg4_1
#include <iostream>
using namespace std;
int main()
{
int m,n,i,k;
double s,p,x,y;
cout << "Vlerat hyrse m,n dhe x: ";
cin >> m
>> n
>> x;
s=0;

50 Algoritmet
i=1;
do
{
s=s+(2*i+n);
i=i+2;
}
while (i<=m+n);
p=1;
for (k=2;k<=n;k++)
p=p*(k+x);
y=x/2+3*s-2*p;
cout << "Vlera e funksionit y="
<< y
<< "\n";
return 0;
}

Pas ekzekutimit t programit t dhn, pr vlerat e shfrytzuara gjat


vizatimit t rrugs s kaluar n Fig.4.2, rezultati q shtypet n ekran sht:
Vlera e funksionit y=57.5
Shuma dhe prodhimi mund t paraqiten njkohsisht edhe n rastet kur
funksionet prcaktohen me m shum shprehje.
Shembull

Llogaritja e vlers numerike t funksionit:


n +1

2x 3 (i + x)
i=2

2
4x + 3x + 1
g=

m
x
x
+ 4 k +
3
k=1
2
(k3)

pr x + 1 < 4.5

pr x + 1 = 4.5
pr x + 1 > 4.5

nse jan dhn vlerat e variablave m, n dhe x.

Shuma dhe prodhimi 51


a. Bllok-diagrami

Fillimi
m,n,x
<

x+1 <>- 4.5

>

s=0

p=1

i=2

k=1
Po
k = 3

s=s+(i+x)

Jo
x

p = pk +
3

i=i+1
Po
i(n+1)

k=k+1

Jo
Po

k m
Jo

g=2x-3s

g=4x2+3x+1

g=

x
+ 4p
2

d
Fundi
Fig.4.3
Ktu, versioni m i sakt i bllok-diagramit do t vizatohej nse blloqet
pr leximin e variablave m dhe n vendosen n degn e majt dhe t djatht
(prkatsisht), sepse vetm n kto deg shfrytzohen.

52 Algoritmet
b. Rruga - pr m=4, n=4 dhe x=2

Fig.4.4
Gjat rrugs s kaluar n Fig.4.4, meq plotsohet kushti x+1<4.5, vlera e
funksionit llogaritet prmes shprehjes s par ku figuron shuma, kshtu:
g = 2 2 3 {(2 + 2) + (3 + 2) + (4 + 2) + (5 + 2)}
s

Shuma dhe prodhimi 53


c. Programi
// Programi Prg4_3
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int m,n,i,k;
double s,p,x,g;
cout << "Vlerat hyrse m,n dhe x: ";
cin >> m
>> n
>> x;
if (x+1<4.5)
{
s=0;
for (i=2;i<=n+1;i++)
s=s+(i+x);
g=2*x-3*s;
}
else
if (x+1==4.5)
g=4*pow(x,2)+3*x+1;
else
{
p=1;
for (k=1;k<=m;k++)
if (k!=3)
p=p*(k+x/3);
g=x/2+4*p;
}
cout << "Vlera e llogaritur g="
<< g
<< "\n";
return 0;
}

Nse ekzekutohet programi i dhn dhe prmes tastiers i jepen vlerat e


shfrytzuara gjat vizatimit t rrugs s kaluar, n ekran do t shtypet rezultati:
Vlera e llogaritur g=-62

54 Algoritmet

Detyra

T llogariten vlerat e funksioneve:


a.

y = x + 2

n+1

(i +

x + 1

3)2

(i + 1)

i=1
(tek)

i=2

b.
n
x
+ 3 (2i + 1)
i =1
2

z =
x 2 n (k + x)

3
k =1

(k 3,4)

pr 2x > m

pr 2x m

c.
m

v = e2x +

1
m

(i + 1)

i =1

2 (k + 1)

k =2
n

3 (k + 3)2
k =1

nse jan dhn vlerat e variablave m, n dhe x.

Faktorieli i zakonshm 56
Faktorieli ift dhe tek 64
Faktorieli brenda shums 66
Faktorieli brenda prodhimit 81

56 Algoritmet

N praktik shpesh her prdoren edhe vlera t faktorielve t ndryshm.


Llogaritja e faktorielit sht prafrsisht e njjt me llogaritjen e prodhimit, sepse
vlera fillestare e faktorielit merret 1. Por, ktu duhet pasur kujdes n nj dallim
esencial t shprehjes e cila shkruhet brenda unazs n t ciln llogaritet faktorieli,
sepse ajo gjithnj e ka formn:
F=Fi
ku i sht nj numrator.

Faktorieli i zakonshm
Procedura pr llogaritjen e faktorielit t zakonshm, kur ai gjindet jasht
shprehjeve t shumave, prodhimeve ose edhe shprehjeve tjera, sht e njjt me
llogaritjen e prodhimit t numrave natyror.
Shembull

Llogaritja e vlers numerike t faktorielit:


F=n!
nse sht dhn vlera e variabls n.

F = 1 2 3 ... n =

i
i=1

Brenda unazs prmes s cils realizohet shumzimi i numrave natyror mes


1 dhe n, shprehja pr llogaritjen e faktorielit shkruhet ashtu si u tha m sipr.
F = F i
ku prmes variabls i gjenerohen t gjith numrat natyror mes 1 dhe n.
a. Bllok-diagrami
b. Rruga - pr n=3

Llogaritja e faktorielit 57

Po

Fillimi

F=1

i=1

F=Fi

i=i+1

i n
Jo
F

Fundi

Fig. 5.1

Fig.5.2

c. Testimi - pr n=3
Hapi

Blloku

Urdhri

Fillimi

Lexo: n

3
4
5
6
7
8
9
10
11
12
13

3
4
5
6
7
5
6
7
5
6
7

F=1
i=1
F=F i
i=i+1
Pyet:in
F=F i
i=i+1
Pyet:in
F=F i
i=i+1
Pyet:in

Vlerat numerike
merren
prej njsis
hyrse
F 3, i 4
i 4
i 6, n 2
F 5, i 6
i 6
i 9, n 2
F 8, i 9
i 9
i 12, n 2

Rezultati
Fillimi i
algoritmit
n=3
F=1
i=1
F=1 1=1
i=1+1=2
Po
F=1 2=2
i=2+1=3
Po
F=2 3=6
i=3+1=4
Jo

58 Algoritmet
14

Shtyp:F

15

Fundi

F 11
-

Shtypet vlera 6
Fundi i
algoritmit

Fig.5.3
Vlera e faktorielit q fitohet gjat procedurs s testimit sht:
Vlera fillestare(3)
F = 1 1 2 3
5
8
11

Fig.5.4
d. Programi
// Programi Prg5_1
#include <iostream>
using namespace std;
int main()
{
int n,i;
double F;
cout << "Vlera hyrse n: ";
cin >> n;
F=1;
for (i=1;i<=n;i++)
F=F*i;
cout << "Faktorieli F="
<< F
<< "\n";
return 0;
}

Nse programi i dhn ekzekutohet pr vlern hyrse n=3, rezultati q


shtypet n ekran sht:
Faktorieli F=6
gj q prputhet me vlern e fituar gjat testimit.

Llogaritja e faktorielit 59
Njlloj gjendet edhe vlera e faktorielit pr shprehjet e ndryshme, rezultati i t
cilave sht nj numr natyror.
Shembull

Llogaritja e vlers numerike t faktorielit:


F=(2m+n)!
nse jan dhn vlerat e variablave m dhe n.

F = 1 2 3 ... (2m + n) =

2m + n

i
i=1

a. Bllok-diagrami

b. Rruga - pr m=1 dhe n=2


Fillimi
m,n
F=1
i=1
F=Fi
i=i+1

Po

i(2m+n)
Jo
F
Fundi

Fig.5.5
c. Programi
// Programi Prg5_5
#include <iostream>
using namespace std;

Fig.5.6

60 Algoritmet
int main()
{
int m,n,i;
double F;
cout << "Vlerat hyrse m dhe n: ";
cin >> m
>> n;
F=1;
for (i=1;i<=2*m+n;i++)
F=F*i;
cout << "Faktorieli F="
<< F
<< "\n";
return 0;
}
Nse gjat ekzekutimit t programit, si vlera hyrse prmes tastiers jepen
vlerat m=1 dhe n=2, n ekran do t shtypet:
Faktorieli F=24
ku vlera 24 i prgjigjet 4!.
Procesi i llogaritjes do t ket nj cikl m pak, nse gjat llogaritjes s
faktorielit t nj numri m t madh se 1 nisemi prej vlers fillestare F=1 dhe
vlera e variabls merret i=2. Ngjashm, kur llogaritet faktorieli i nj numri m
t madh se 2, procesi i llogaritjes do t zvoglohet pr dy cikle, nse merret F=2
dhe i=3.
Nse faktorieli paraqitet brenda shprehjeve t funksioneve, veprohet njlloj
si edhe te shumat e prodhimet, prkatsisht s pari llogaritet vlera e faktorielit
dhe pastaj vlera e funksionit.
Shembull

Llogaritja e vlers numerike t funksionit:


(m + 1)! + 3x 4 pr x + m > 5

y = 0
pr x + m = 5
(3n + 2)! - x2
pr x + m < 5

nse jan dhn vlerat e variablave m, n dhe x.

Llogaritja e faktorielit 61

a. Bllok-diagrami

Fillimi
m,n,x
<

(x+m)

<>

>

F=1

F=1

i=1

i=1

F=Fi

F=Fi

i=i+1

i=i+1

Po

Po
i(3n+2)

i(m+1)

Jo

Jo

y=F-x2

y=0

y
Fundi

Fig. 5.7

y=F+3x-4

62 Algoritmet
b. Rruga - pr m=2, n=1 dhe x=5

Fig.5.8
Vlera q llogaritet gjat rrugs s kaluar sht:
y = 123+ 35 4

c. Programi
// Programi Prg5_7
#include <iostream>
#include <cmath>
using namespace std;
int main()

Llogaritja e faktorielit 63
{
int m,n,i;
double F,x,y;
cout << "Vlerat hyrse m,n dhe x: ";
cin >> m
>> n
>> x;
if (x+m<5)
{
F=1;
for (i=1;i<=3*n+2;i++)
F=F*i;
y=F-pow(x,2);
}
else
if (x+m==5)
y=0;
else
{
F=1;
for (i=1;i<=m+1;i++)
F=F*i;
y=F+3*x-4;
}
cout << "Vlera e funksionit y="
<< y
<< "\n";
return 0;
}

Nse programi ekzekutohet pr vlerat hyrse q jan shfrytzuar gjat


vizatimit t rrugs n Fig.5.8, si rezultat n ekran do t shtypet:
Vlera e funksionit y=17
gj q fitohet ashtu si u tregua edhe m sipr.
Q algoritmi pr llogaritjen e faktorielit t jet plotsisht i sakt, n te mund
t parashihet edhe rasti kur duhet t llogaritet vlera 0!=1.
Detyra

T llogariten vlerat e funksioneve:


a.
y=

x
(3n + m + 1)!
2

64 Algoritmet
b.
3x + 2

z =
x
(m + 1)! +

(m + n)!

pr x < m
pr x m

c.
e2x 3x2 + (4n)!

(n + 1)!-2x
g =

(n! )2 + 1

(2n)!

pr x + 3 < n
pr x + 3 = n
pr x + 3 > n

nse jan dhn vlerat e variablave m, n dhe x.

Faktorieli ift dhe tek


N matematik prdoret edhe faktorieli i cili fitohet vetm me shumzimin e
numrave natyror ift, ose t numrave natyror tek.
Shembull

Llogaritja e vlers numerike t faktorielit ift:


F = (2n)!!

nse sht dhn vlera e variabls n.

F = 2 4 6 ... 2n =

2n

i=2
(ift)

Llogaritja e faktorielit 65
a. Bllok-diagrami

c. Rruga - pr n=3
Fillimi
n
F=1
i=2
F=Fi
i=i+2

Po

i(2n)
Jo
F
Fundi

Fig.5.9
c. Programi
// Programi Prg5_9
#include <iostream>
using namespace std;
int main()
{
int n,i;
double F;
cout << "Vlera hyrse n: ";
cin >> n;
F=1;i=2;
do
{
F=F*i;
i=i+2;
}
while (i<=2*n);
cout << "Faktorieli ift F="
<< F
<< "\n";
return 0;

Fig.5.10

66 Algoritmet
}

Pr vlern hyrse n=3, rezultati q shtypet n ekran sht:


Faktorieli ift F=48
Plotsisht njlloj llogaritet edhe vlera e faktorielit tek. Kshtu, p.sh., nse
krkohet vlera e faktorielit:
F=(2n-1)!!
n baz t prkufizimit prkats matematikor kjo vler llogaritet:

F = 1 3 5 ... (2n 1) =

2n 1

i=1
(tek)

gj q nuk sht aspak rnd t realizohet prmes bllok-diagramit.

Faktorieli brenda shums


Faktorielt mund t paraqiten brenda shprehjeve t shumave, ose edhe
brenda funksioneve t ndryshme.
Shembull

Llogaritja e vlers numerike t funksionit:


n
i

y = 3x 2 (n + 2)! +
3

i =1

nse jan dhn vlerat e variablave x dhe n.

n
2
1

y = 3x 2(n + 2)! + + (n + 2)! + + ... + (n + 2)! +


3
3
3

Meq, si shihet edhe m sipr, vlera e faktorielit sht konstante brenda t


gjith antarve t seris q mblidhen, at duhet llogaritur s pari, pr ta
shfrytzuar pastaj gjat procesit t gjetjes s shums.

Llogaritja e faktorielit 67
a. Bllok-diagrami

b. Rruga - pr n=2 dhe x=3


Fillimi
x,n

F=(n+2)!

F=1
i=1
F=Fi
i=i+1
Po
i(n+2)
Jo
s=0
i=1
i

s = s + F +
3

i=i+1
Po

i n
Jo
y=3x-2s

n
i

s = F +
3
i = 1

y
Fundi

Fig.5.11
c. Programi

Fig.5.12

68 Algoritmet

// Programi Prg5_11
#include <iostream>
using namespace std;
int main()
{
int n,i;
double x,y,F,s;
cout << "Vlerat hyrse x dhe n: ";
cin >> x
>> n;
F=1;
for (i=1;i<=n+2;i++)
F=F*i;
s=0;
for (i=1;i<=n;i++)
s=s+(F+i/3.);
y=3*x-2*s;
cout << "Vlera e funksionit y="
<< y
<< "\n";
return 0;
}

Nse programi i dhn ekzekutohet pr vlerat e shfrytzuara gjat vizatimit


t rrugs n Fig.5.12, rezultati q shtypet n ekran do t duket:
Vlera e funksionit y=-89
Faktorieli brenda shums mund t mos ket vler konstante, prkatsisht t
mos varet nga vlera e variabls e cila i prcakton antart e seris q mblidhen.
Shembull

Llogaritja e vlers numerike t funksionit:


n
i

y = 3x 2 (i + 2)! +
3
i = 1

nse jan dhn vlerat e variablave x dhe n.

1
2
n

y = 3x 23! + + 4! + + ... + (n + 2)! +


3
3
3

Llogaritja e faktorielit 69
Nga shprehja e dhn m sipr shihet se vlera e faktorielit nuk sht
konstante, por ajo ndryshon pr do i, gj q e imponon nevojn e llogaritjes s
ksaj vlere brenda unazs pr llogaritjen e shums. Meq n antarin e par i cili
merr pjes n mbledhje figuron 3!, vlera fillestare e faktorielit duhet t merret
2!=2 dhe pastaj t shumzohet me (i+2).
a. Bllok-diagrami

b. Rruga - pr n=2 dhe x=3

Fillimi
x,n
s=0
F=2
i=1

F=F(i+2)
i

s = s + F +
3

i=i+1
Po

i n
Jo
y=3x-2s
y
Fundi

Fig.5.13

c. Programi

Fig.5.14

70 Algoritmet

// Programi Prg5_13
#include <iostream>
using namespace std;
int main()
{
int n,i;
double x,y,F,s;
cout << "Vlerat hyrse x dhe n: ";
cin >> x
>> n;
s=0;
F=2;
for (i=1;i<=n;i++)
{
F=F*(i+2);
s=s+(F+i/3.);
}
y=3*x-2*s;
cout << "Vlera e funksionit y="
<< y
<< "\n";
return 0;
}

Pas ekzekutimit t programit t dhn, p.sh. pr vlerat hyrse t shfrytzuara


gjat vizatimit t rrugs s kaluar, rezultati q shtypet n ekran sht:
Vlera e funksionit y=-53
Gjetja e ligjshmris pr ta fituar vlern aktuale t faktorielit, duke
shfrytzuar vlern paraprake t tij, n rast t prgjithshm e komplikon punn e
shkruarjes s programit pr llogaritjen e vlers s faktorielit. M thjesht sht
nse brenda unazs s shums do vler e faktorielit llogaritet prej fillimit, pa
menduar aspak se a mund t thjeshtohet llogaritja, nse shfrytzohet vlera e
faktorielit e cila sht llogaritur paraprakisht.
Shembull

Llogaritja e vlers numerike t funksionit:


y =

n
x
3 [(2i + 1)! x]
2
i =1

nse jan dhn vlerat e variablave x dhe n.


x
y =
3
2

{ [(2 1

+ 1)! - x

+ [(2 2 + 1)! - x

+ ... + [(2 n + 1)! - x

]}

Llogaritja e faktorielit 71

a. Bllok-diagrami
Fillimi
x,n
s=0
i=1
F=(2i+1)!
F=1
j=1
F=Fj
j=j+1
Po
j(2i+1)
Jo
s=s+[F-x]
i=i+1
Po

i n
Jo
x
y = 3s
2
y
Fundi

Fig.5.15
Nse vizatohet rruga e kaluar n kt rast, numri i vijave te pjesa e bllokdiagramit pr llogaritjen e faktorielit do t jet i madh, sepse llogaritja prsritet
prej fillimit pr do vler t variabls i.
b. Programi

72 Algoritmet
// Programi Prg5_15
#include <iostream>
using namespace std;
int main()
{
int n,i,j;
double x,y,s,F;
cout << "Vlerat hyrse x dhe n: ";
cin >> x
>> n;
s=0;
for (i=1;i<=n;i++)
{
F=1;
for (j=1;j<=2*i+1;j++)
F=F*j;
s=s+(F-x);
}
y=x/2-3*s;
cout << "Vlera e funksionit y="
<< y
<< "\n";
return 0;
}

Nse programi ekzekutohet pr vlerat hyrse x=3 dhe n=2, rezultati q


shtypet n ekran duket:
Vlera e funksionit y=-358.5
Plotsisht njlloj rrjedh llogaritja e faktorielve, kur ata figurojn brenda
antarve t serive pr t cilt gjenden prodhimet.
Gjat llogaritjes s faktorielit ift ose tek, kur ata figurojn nn shenjn e
shums ose t prodhimit, duhet pasur kujdes t veant.
Shembull

Llogaritja e vlers numerike t funksionit:


n +1

y = 3x + 4 [(2i + 1)!! + i]
i =1

nse jan dhn vlerat e variablave x dhe n.


y = 3x + 4{ [3!! + 1] + [5!! + 2] + ... + [2(n + 1)!! + (n + 1)] }

Llogaritja e faktorielit 73

a. Bllok-diagrami

b. Rruga - pr x=2 dhe n=2


Fillimi
x,n
s=0
i=1
F=1
j=3

F=Fj
s=s+[F+i]
j=j+1
i=i+1
Po
i(n+1)
Jo
y=3x+4s
y
Fundi

Fig.5.16
c. Programi
// Programi Prg5_16
#include <iostream>
using namespace std;
int main()
{

Fig.5.17

74 Algoritmet
int n,i,j;
double x,y,s,F;
cout << "Vlerat hyrse x dhe n: ";
cin >> x
>> n;
s=0;
i=1;
F=1;
j=3;
do
{
F=F*j;
s=s+(F+i);
j=j+2;
i=i+1;
}
while (i<=n+1);
y=3*x+4*s;
cout << "Vlera e llogaritur y="
<< y
<< "\n";
return 0;
}

Rezultati q do t shtypet n ekran, nse ekzekutohet programi i dhn pr


vlerat e variablave hyrse, t cilat jan marr gjat vizatimit t rrugs s kaluar n
Fig.5.17, sht:
Vlera e llogaritur y=522
N nj shprehje t funksionit mund t ndodh t nevojitet llogaritja
alternative e faktorielit ift dhe tek.
Shembull

Llogaritja e vlers numerike t funksionit:


n
x

g = 2a + 3 i!! +
2
i =1

nse jan dhn vlerat e variablave a, x dhe n.

Llogaritja e faktorielit 75
x
x

g = 2a + 3 1!! + + 2!! + + ... +


2
2

a. Bllok-diagrami

n!! + 2

b. Rruga - pr a=5, x=2 dhe n=4

Fillimi
a,x,n
s=0
i=1
F=1
j=i
F=Fj
j=j-2
Po
j > 1
Jo
x

s = s + F +
2

i=i+1
Po

i n
Jo
y=2a+3s
y
Fundi

Fig.5.18

Fig.5.19

76 Algoritmet
c. Programi
// Programi Prg5_18
#include <iostream>
using namespace std;
int main()
{
int n,i,j;
double a,x,y,s,F;
cout << "Vlerat e variablave a, x dhe n: ";
cin >> a
>> x
>> n;
s=0;
for (i=1;i<=n;i++)
{
F=1;
j=i;
do
{
F=F*j;
j=j-2;
}
while (j>1);
s=s+(F+x/2);
}
y=2*a+3*s;
cout << "Vlera e llogaritur y="
<< y
<< "\n";
return 0;
}

Pas ekzekutimit t programit pr vlerat e variablave hyrse, t cilat jan


shfrytzuar gjat vizatimit t rrugs s kaluar n Fig.5.19, n ekran fitohet:
Rezultati y=64
Detyra

T llogariten vlerat e funksioneve:


a.
y =

n +2
3x
i

+ 4 (2i + 3)! +
a
b
i = 2

Llogaritja e faktorielit 77

b.
(n + 1)!

a
m
3 (2i + 1)!! +
g = i =1
i

(2n)!!

pr x < (a + b)
pr x = (a + b)
pr x > (a + b)

nse jan dhn vlerat e variablave a, b, x, m dhe n.

N shprehjet e funksioneve njkohsisht mund t paraqiten shuma,


prodhime dhe faktoriele, t cilat llogariten duke u mbshtetur n algoritmet
elementare prkatse.
Shembull

Llogaritja e vlers numerike t funksionit:


m 1

z = 3 [k + a]2 4
k =1

(m + 1)!

+ 3 +
2
x + 2

i=2
2m

(ift)

nse jan dhn vlerat e variablave x, a dhe m.

z = 3

{ [1 + a]2 + [2 + a]2 + ... + [(m + 1) + a]2 }

2m
4
+ 3
4 + 3 + 3 ...

2
2
2
1 2 3 ... (m + 1)
+
x + 2

78 Algoritmet

a. Bllok-diagrami

b. Rruga - pr x=3, a=0.5 dhe m=3

Fillimi
x,a,n

s=

m -1

[k + a]2

k=1

s=0
k=1
s=s+[k+a]2
k=k+1
Po
k(m-1)
Jo
p=1
i=2

p = p + 3
2

p=

2m i

+ 3
2

i=2
(ift)

i=i+2
Po

i 2m
Jo
A

Llogaritja e faktorielit 79

F=1
i=1
F=(n+1)!

F=Fi
i=i+1
Po
i(m+1)
Jo

z = 3 s 4 p +

F
x+2

z
Fundi

Fig.5.20
c. Programi
// Programi Prg5_20
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
const double x=3,a=0.5;
const int m=3;
int i,k;
double s,p,F,z;
s=0;
for (k=1;k<=m-1;k++)
s=s+pow(k+a,2);
p=1;
i=2;
do
{
p=p*(i/2.+3);

Fig.5.21

80 Algoritmet
i=i+2;
}
while (i<=2*m);
F=1;
for (i=1;i<=m+1;i++)
F=F*i;
z=3*s-4*p+F/(x+2);
cout << "Rezultati z="
<< z
<< "\n";
return 0;
}

Nse programi ekzekutohet pr vlerat hyrse t deklaruara si konstante,


rezultati q shtypet n ekran sht:
Rezultati z=-449.7
Detyra

T llogariten vlerat numerike t funksioneve:


a.
f =

n +1
x
+ 2 [(2i)!! + 3] [(n + 2)!] 2
3
i =1
(i 3)

b.
n

(n + 1)! + 3 [k + 1]
k =1

(tek)

(2n + 1)!! + 2a - b

g =

(2n)!! + x

pr (a + x) < b

pr (a + x) = b
pr (x + a) > b

nse jan dhn vlerat e variablave a, b, x dhe n.

Llogaritja e faktorielit 81

Faktorieli brenda prodhimit


Faktorielt mund t paraqiten edhe brenda antarve t serive pr t cilat
krkohet prodhimi. Gjat prpilimit t algoritmeve prkatse, n kto raste
shfrytzohen procedura plotsisht t njjta si edhe te shumat.
Shembull

Llogaritja e vlers numerike t funksionit:


i

(i + 1)! + 3
i =1
n

y = 3x + 2

(i 2,3)

nse jan dhn vlerat e variablave x dhe n.

y = 3x + 2

1
4

2! + 3 5! + 3 ...

n + 1

(n + 1)! +
3

82 Algoritmet
a. Bllok-diagrami
Fillimi
x,n
p=1
i=1
Po
i=2
Jo
i=3
Jo
F=1
j=1
F=Fj
j=j+1
Po
j(i+1)
Jo
i

p = p F +
3

i=i+1
Po

i n
Jo
y=3x+2p
y
Fundi

Fig.5.22

Po

Llogaritja e faktorielit 83
b. Rruga - pr x=2 dhe n=4

Fig.5.23

84 Algoritmet
c. Programi
// Programi Prg5_22
#include <iostream>
using namespace std;
int main()
{
int n,i,j;
double x,y,p,F;
cout << "Vlerat hyrse x dhe n: ";
cin >> x
>> n;
p=1;
for (i=1;i<=n;i++)
if ((i==2) || (i==3))
{
}
else
{
F=1;
for (j=1;j<=i+1;j++)
F=F*j;
p=p*(F+i/3.);
}
y=3*x+2*p;
cout << "Vlera e llogaritur y="
<< y
<< "\n";
return 0;
}

Nse programi ekzekutohet pr vlerat hyrse t shfrytzuara gjat vizatimit t


rrugs s kaluar, n ekran do t fitohet rezultati:
Vlera e llogaritur y=572.222
Detyra

T llogariten vlerat e funksioneve:


a.
f =

m
x
x

3 k!! +
2
2
k =1

Llogaritja e faktorielit 85

b.
m +1 i

3x + 2 + 3
2

i =1

g =
2
m
x
ax

e
3
(2j
3)!
+
+

a
j= 2

(ift)

pr x a

pr x = a

c.
h =

m +2 i
1
2 m 2
a

+ 4i
(j!)
3
3 j= 1
j

i =1 3
(i 3,5)

nse jan dhn vlerat e variablave x, a dhe m.

Vektort

90

Matricat 134
Fushat tridimensionale 217

88 Algoritmet

Matematika

Kimia

Fizika

Biologjia

Programimi

Edukata
fizike

Agroni
Ardiani
Arianisa
Arta
Besa

2
Gjuha e huaj

1
2
3
4
5

Emri

1
Gjuha amtare

Numri rendor

Grumbulli i numrave t vendosur n nj hapsir n baz t parimeve t


caktuara, quhet fush numerike. Kur pozicionet e numrave n hapsirn e fushs
numerike prcaktohen nga nj madhsi, pr fushn thuhet se sht njdimensionale
dhe quhet vektor. Nse pr prcaktimin e pozicioneve t numrave prdoren dy
madhsi, fusha numerike sht dydimensionale dhe quhet matric. Kurse, kur pozita
e numrave n fush prcaktohet prmes m shum madhsive, pr fushn thuhet
se sht shumdimensionale.
Pr t'i kuptuar m mir fushat numerike, do ta marrim si shembull
grumbullin e notave t 5 nxnsve t par, n regjistrin e notave t nj klase, i
cili sht dhn n Fig.6.1.

5
5
5
5
5

5
5
5
5
5

5
5
5
5
4

5
4
5
5
4

5
4
5
5
4

5
4
5
5
5

5
5
5
5
5

5
5
5
5
4

Fig.6.1 Notat e nxnsve t nj klase


Ktu, grumbulli i notave t nj nxnsi sht fush njdimensionale dhe e
paraqet vektorin e notave t tij. Kshtu, p.sh., vektori i notave t Ardianit sht:

A =

Notat n kt vektor nuk jan shnuar arbitrarisht, sepse do pozicioni n te i


prgjigjet nota e nj lnde t caktuar.

Fushat numerike 89
Grumbulli i notave t nxnsve, t cilat jan shnuar n tabeln e dhn n
Fig.6.1:

B =

paraqet fush dydimensionale dhe e formon matricn e notave t tyre.


Nga shembulli i dhn m sipr shihet se te vektort e notave t nxnsve,
notat shnohen n baz t lndve, prkatsisht numrave rendor t tyre. Kurse,
te matrica e notave t nxnsve, vendosja e notave n fushat e veanta bhet n
baz t nxnsve dhe lndve, ose numrave rendor t tyre.
N rastin e prgjithshm, kur kemi t bjm me m-nxns dhe n-lnd,
vektori i notave t nxnsit mund t paraqitet kshtu:
1
A = a1

...

a2 ... an

ose shkurt A(n), ku a1, a2, ..., an jan antart e vektorit. Matrica e notave t
nxnsve sht:
j=1

...

i=1 b11 b12 ... b1n


2

b21 b22 ... b2n

B = ... ... ... ... ...


m

bm1 bm2 ... bmn

dhe shkurt shnohet B(m,n), ku b11, b12, ..., bm1, bm2,..., bmm jan antart e
matrics.
Numrat t cilt i shoqrojn antart e vektorit, ose t matrics, quhen
indekse. Kshtu, p.sh., indeksi i nots s matematiks te vektort e notave t
nxnsve sht 3, kurse antari i ktij vektori pr notn e Arts sht a3=5.
Te matrica, p.sh., antari b53=4 i prgjigjet nots s Bess nga lnda e
matematiks.

90 Algoritmet

Vektort
Mbushja e vektorve me vlera numerike, prkatsisht operimi me vlerat e
antarve t veant t tyre bhet duke i shfrytzuar indekset prkats.

Prcaktimi i vektorve
Vlerat numerike t antarve t vektorve kompjuterit mund t'i jepen prmes
leximit si numra t gatshm, ose ato mund t llogariten n baz t ligjshmris s
dhn.
Shembull

Formimi i vektorit A(n), duke i llogaritur antart ai t tij


kshtu:
ai=3i+1
nse dihet vlera e variabls n.

a. Bllok-diagrami

b. Rruga - pr n=5
Fillimi
n
i=1
ai=3i+1
i,ai
i=i+1

Po

i n
Jo
Fundi

Fig.6.2

Fig.6.3

N gjuhn C++ indekset e antarve t vektorve dhe matricave fillojn


me vlern 0. Pr kt arsye, n pjesn vijuese, gjat shkruarjes s programeve,
indekset fillestare dhe kufijt e tyre do t zvoglohen pr nj, krahasuar me vlerat
prkatse n bllok-diagrame.

Fushat numerike 91
c. Programi
// Programi Prg6_2
#include <iostream>
using namespace std;
int main()
{
int const n=5;
int i,A[n];
for (i=0;i<n;i++)
{
A[i]=3*i+1;
cout << "A["
<< i
<< "]="
<< A[i]
<< "\n";
}
return 0;
}

Pas ekzekutimit t programit, antart e vektorit do t shtypen n ekran


kshtu:
A[0]=1
A[1]=4
A[2]=7
A[3]=10
A[4]=13
Antart e vektorit mund edhe t llogariten, duke shfrytzuar shprehje t
fardoshme.
Shembull

Formimi i vektorit A(n), duke llogaritur antart ai t tij


kshtu:
ai =

i
x
+ 3 (j + 2i)
3
j= 1

nse jan dhn vlerat e variablave x dhe n.

a. Bllok-diagrami

b. Rruga - pr x=1 dhe n=3

92 Algoritmet

Fillimi
n,x
i=1

s=0
j=1
s=s+(j+2i)
j=j+1
Po

j i
Jo
a =
i

x
+ 3s
2

i,ai
i=i+1
Po

i n
Jo
Fundi

Fig.6.4

Fig.6.5

Vlerat e llogaritura gjat rrugs s kaluar:


1
+ 3
2
1
a2 =
+ 3
2
1
a3 =
+ 3
2
a1 =

c. Programi

{ [1

+ 2 1] }

{ [1

+ 2 2] + [2 + 2 2] }

{ [1

+ 2 3] + [2 + 2 3] + [3 + 2 3] }

Fushat numerike 93

// Programi Prg6_4
#include <iostream>
using namespace std;
int main()
{
int const n=3,
x=1;
int i,j;
double s,A[n];
for (i=0;i<n;i++)
{
s=0;
for (j=1;j<=i;j++)
s=s+(j+2*i);
A[i]=x/2.+3*s;
cout << "A["
<< i
<< "]="
<< A[i]
<< "\n";
}
return 0;
}

Nse ekzekutohet programi i dhn, rezultati q shtypet n ekran sht:


A[0]=0.5
A[1]=9.5
A[2]=33.5
Vektort mund t formohen edhe duke shfrytzuar antart e vektorve t
tjer.
Shembull

Formimi i vektorit B(n), duke shfrytzuar vlerat e antarve


t vektorit t dhn A(n), n baz t ligjshmris:
bi = i + 2ai2 1

94 Algoritmet
a. Bllok-diagrami

b. Rruga - pr

A=

-2

Fillimi
n,(ai,i=1,n)
i=1
bi=i+2ai2-1
i,bi
i=i+1
Po

i n
Jo
Fundi

Fig.6.6

Fig.6.7

N bllok-diagram, me (ai,i=1,n) shnohet shkurt vargu i antarve t


vektorit, prkatsisht a1, a2, ... , an.
c. Programi
// Programi Prg6_6
#include <iostream>
using namespace std;
int main()
{
int const n=4;
int i,A[n]={3,5,-2,8},B[n];
for (i=0;i<n;i++)
{
B[i]=i+2*(A[i]*A[i])-1;
cout << "B["
<< i
<< "]="
<< B[i]
<< "\n";
}
return 0;
}

Fushat numerike 95
Pas ekzekutimit t programit, antart e vektorit t formuar do t shtypen n
ekran kshtu:
B[0]=17
B[1]=50
B[2]=9
B[3]=130
Vektort mund t formohen edhe duke shfrytzuar vlerat numerike t
antarve t disa vektorve njkohsisht.
Shembull

Formimi i vektorit G(k), duke shfrytzuar vlerat e antarve


t vektorve A(n) dhe B(m), kshtu:
G =

a. Bllok-diagrami
Fillimi
m,n,(ai,i=1,n),(bi,i=1,m)
i=1
Po

i m

gi=bi

Jo

gi=ai-m
i,gi
i=i+1

Po
i(m+n)
Jo
Fundi

Fig.6.8

96 Algoritmet
b. Rruga
A =

-3

B =

-2

Fig.6.9
c. Programi
// Programi Prg6_8
#include <iostream>
using namespace std;
int main()
{
int const m=3,n=2;
int A[n]={9,-3},
B[m]={6,-2,8},
i,G[m+n];
for (i=0;i<m+n;i++)
{
if (i<m)
G[i]=B[i];

Fushat numerike 97
else
G[i]=A[i-m];
cout << "G["
<< i
<< "]="
<< G[i]
<< "\n";
}
return 0;
}

Antart e vektorit t formuar G, pas ekzekutimit t programit t dhn, n


ekran do t shtypen kshtu:
G[0]=6
G[1]=-2
G[2]=8
G[3]=9
G[4]=-3

Operacionet aritmetikore
N praktik shpesh her kryhen operacione t ndryshme aritmetikore mbi
antart e nj vektori, si dhe mes antarve t dy ose m shum vektorve.
Shembull

Formimi i vektorit B(n), nga antart prkats t vektorit t


dhn A(n), duke shumzuar antarve negativ me vlerat e
indekseve t tyre, kurse antart pozitiv - me vlern e
konstantes s dhn x.

98 Algoritmet
a. Bllok-diagrami
Fillimi
x,n,(ai,i=1,n)
i=1
Po

ai < 0

bi=iai

Jo

bi=xai
i,bi
i=i+1

Po

i n
Jo
Fundi

Fig.6.10
b. Rruga e kaluar - pr x=2 dhe

A =

Fig.6.11

-3

-2

Fushat numerike 99
Vlerat q llogariten gjat rrugs s kaluar jan:
b1 = x a1
b2 = x a2
b3 = 3 a3
b4 = x a4
b5 = 5 a5

c. Programi
// Programi Prg6_10
#include <iostream>
using namespace std;
int main()
{
int const x=2,n=5;
int A[n]={6,9,-3,4,-2},i,B[n];
for (i=0;i<n;i++)
{
if (A[i]<0)
B[i]=i*A[i];
else
B[i]=x*A[i];
cout << "B["
<< i
<< "]="
<< B[i]
<< "\n";
}
return 0;
}

Nse programi i dhn ekzekutohet, vlerat e vektorit B t cilat shtypen n


ekran, jan:
B[0]=12
B[1]=18
B[2]=-6
B[3]=8
B[4]=-8
Vlerat e antarve t vektorit mund t prcaktohen edhe prmes llogaritjeve
t ndryshme m komplekse.
Shembull
Formimi i vektorit Z(m), nga antart e vektorit t dhn

100 Algoritmet
F(m), duke ua shtuar antarve t veant vlerat e shumave:
fi + i

zi = i
fj2
j= 1

pr i 3
pr i < 3

a. Bllok-diagrami
Fillimi
m,(fi,i=1,m)
i=1
Po

Jo

i < 3

s=0
j=1
s=s+fj2
j=j+1
Po

j i
Jo
zi=s

zi=fi+i
i,zi
i=i+1

Po

i m
Jo
Fundi

Fig.6.12

Fushat numerike 101


b. Rruga - pr m=5 dhe F=

-1

Fig.6.13

-4

102 Algoritmet
Gjat rrugs s kaluar n Fig.6.13 antart e vektorit Z(n) llogariten kshtu:
z1 = f12
z2
z3
z4
z5

=
=
=
=

f12
f3
f4
f5

+ f22
+ 3
+ 4
+ 5

c. Programi
// Programi Prg6_12
#include <iostream>
using namespace std;
int main()
{
int const m=5;
int F[m]={3,2,-1,6,-4},i,j,s,Z[m];
for (i=0;i<m;i++)
{
if (i<2)
{
s=0;
for (j=0;j<=i;j++)
s=s+F[j]*F[j];
Z[i]=s;
}
else
Z[i]=F[i]+i;
cout << "Z["
<< i
<< "]="
<< Z[i]
<< "\n";
}
return 0;
}

Vektori Z, q formohet pas ekzekutimit t programit, pr vlerat e vektorit F


t cilat jan shfrytzuar gjat rrugs s kaluar n Fig.6.13, sht:
Z[1]=9
Z[2]=13
Z[3]=1
Z[4]=9
Z[5]=0

Fushat numerike 103


Operacionet aritmetikore mund t zbatohen edhe mbi antart e m shum
vektorve njkohsisht.
Shembull

Formimi i vektorit G(m), duke shumzuar katrort e


antarve prkats t vektorit A(m) me vlerat absolute t
antarve me indeks t njjt t vektorit B(m). Njkohsisht,
antart e vektorit G(m), t cilt jan m t mdhenj se
numri i dhn x, duhet t pjestohen me indeksin prkats.

a. Bllok-diagrami
Fillimi
x,m,(ai,i=1,m),(bi,i=1,m)
i=1
gi=ai2|bi|
Po
gi > x
Jo

i,gi
i=i+1
Po

i m
Jo
Fundi

Fig.6.14

gi=gi/i

104 Algoritmet
b. Rruga - pr x=20 dhe A=

-1

B = 2

-3

-4

Fig.6.15
c. Programi
// Programi Prg6_14
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int const x=20,m=4;
int A[m]={-1,7,5,2},
B[m]={2,-3,8,4},i;
double G[m];
for (i=0;i<m;i++)

Fushat numerike 105

{
G[i]=A[i]*A[i]*abs(B[i]);
if (G[i]>x)
G[i]=G[i]/i;
cout << "G["
<< i
<< "]="
<< G[i]
<< "\n";
}
return 0;
}

Pas ekzekutimit t programit t dhn pr vlerat e shfrytzuara gjat vizatimit


t rrugs n Fig.6.15, vlerat e antarve t vektorit G, t cilat shtypen n ekran,
jan:
G[0]=2
G[1]=147
G[2]=100
G[3]=16

Shuma dhe prodhimi


Gjat llogaritjeve t ndryshme praktike, shpesh her shfrytzohet, p.sh.,
shuma, ose prodhimi, ose shuma e katrorve, ose shuma e kubeve, prkatsisht
shum kombinime t tjera t mbledhjes, t zbritjes, t shumzimit dhe t
pjestimit t antarve t vektorve.
Shembull

Mbledhja e antarve pozitiv dhe e katrorve t antarve


negativ t vektorit t dhn A(n).

106 Algoritmet

a. Bllok-diagrami
Fillimi
n,(ai,i=1,n)
s=0
i=1
Po

ai < 0

s=s+ai2

s=s+ai

i=i+1
Po

Jo

i n
Jo
s
Fundi

Fig.6.16

Fushat numerike 107


b. Rruga - pr A =

-2

-3

Fig.6.17
Shuma e cila llogaritet gjat rrugs s kaluar sht:
s = 7 + (-2)2 + 4 + 6 + (-3) 2
c. Programi
// Programi Prg6_16
#include <iostream>
using namespace std;
int main()
{
int const n=5;
int A[n]={7,-2,4,6,-3},i,s;
s=0;
for (i=0;i<n;i++)

108 Algoritmet

{
if (A[i]<0)
s=s+A[i]*A[i];
else
s=s+A[i];
}
cout << "Shuma e krkuar s="
<< s
<< "\n";
return 0;
}

Nse ekzekutohet programi i dhn, si rezultat n ekran do t shtypet vlera:


Shuma e krkuar s=30
Ngjashm, vlerat e antarve t vektorve mund t shfrytzohen pr gjetjen e
prodhimeve t ndryshme.
Shembull

Prodhimi i antarve t vektorit A(n) t cilt kan vler


absolute m t madhe se 5 dhe m t vogl se 12, duke
shtypur antart q nuk marrin pjes n prodhim si dhe
indekset e tyre.

Fushat numerike 109

b. Bllok-diagrami

b. Rruga - pr A =

19

-2 10

Fillimi
n,(ai,i=1,n)
p=1
i=1
Jo
ai > 5
Po
Jo
ai < 12
Po
p=pai

i,ai

i=i+1
Po

i n
Jo
p
Fundi

Fig.6.18

Fig.6.19

Vlera q llogaritet gjat rrugs s kaluar sht:


Vlera fillestare
p = 1 7 8 10

Njkohsisht, shtypen edhe indekset dhe vlerat e antarve t cilt jan jasht
kufijve t dhn:
2
19
4
-2

110 Algoritmet
c. Programi
// Programi Prg6_18
#include <iostream>
using namespace std;
int main()
{
int const n=5;
char t[20]="--------------";
int A[n]={7,19,8,-2,10},i,p;
p=1;
cout << " i
A[i]"
<< "\n"
<< t
<< "\n";
for (i=0;i<n;i++)
{
if ((A[i]>5) && (A[i]<12))
p=p*A[i];
else
cout << " "
<< i
<< "
"
<< A[i]
<< "\n";
}
cout << t
<< "\n"
<< "Prodhimi p="
<< p
<< "\n";
return 0;
}

Pr vlerat e shfrytzuara gjat rrugs s kaluar n Fig.6.19, si rezultat n ekran


shtypet:
i
A[i]
-------------1
19
3
-2
-------------Prodhimi p=560

Antart e vektorve mund t shfrytzohen edhe brenda shprehjeve t


ndryshme pr llogaritjen e shumave ose t prodhimeve, prmes indekseve
prkatse.

Fushat numerike 111

Shembull

Llogaritja e vlers s shprehjes:


n

3x + 4 ( ai + 2)
i =1

y =
e2x 2 n a2 x
i

i=2

(ift)

pr x < 0.55

pr x 0.55

ku me ai nnkuptohen antart e vektorit t dhn A(n).

a. Bllok-diagrami
Fillimi
n,(ai,i=1,n),x
Po

Po

x < 0.55

Jo

p=1

s=0

i=1

i=2

p=p(|ai|+2)

s=s+(ai2-x)

i=i+1

i=i+2
Po

i n
Jo

i n
Jo
y=e2x-2s

y=3x+4p

y
Fundi

Fig.6.20

112 Algoritmet
b. Rruga - pr x = 0.2 dhe A=

-9

Fig.6.21
c. Programi
// Programi Prg6_20
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int const n=3;
int A[n]={6,4,-9},i;
double s,p,x,y;
cout << "Vlera e variabls x=";
cin >> x;

Fushat numerike 113


if (x<0.55)
{
p=1;
for (i=0;i<n;i++)
p=p*(abs(A[i])+2);
y=3*x+4*p;
}
else
{
s=0;
i=2;
do
{
s=s+A[i]*A[i]-x);
i=i+2;
}
while (i<=n);
y=exp(2*x)-2*s;
}
cout << "Vlera e llogaritur y="
<< y
<< "\n";
return 0;
}

Rezultati q shtypet n ekran, pr vlerat numerike q jan shfrytzuar gjat


vizatimit t rrugs s kaluar n Fig.6.21, sht:
Vlera e llogaritur y=2112.6

Numrimi i antarve t caktuar


Pr t'i numruar antart e caktuar brenda vektorit, t gjith antart e tij
duhet t krahasohen me kushtet e prcaktuara pr numrim.
Shembull

Numri n i antarve me vler numerike negative, n vektorin


e dhn A(m).

Ktu, vlera fillestare e numratorit n duhet t merret zero. Pastaj, sa her q


gjendet ndonj antar me vler numerike negative, vlera e numratorit n rritet
pr nj, kurse pr antart e tjer kjo madhsi nuk ndryshohet.

114 Algoritmet
a. Bllok-diagrami

b. Rruga - pr

A=

-2

Fillimi
m,(ai,i=1,m)
n=0
i=1

ai < 0
Po

Jo

n=n+1
i=i+1
Po

i m
Jo
n
Fundi

Fig.6.22
c. Programi
// Programi Prg6_22
#include <iostream>
using namespace std;
int main()
{
int const m=5;
int A[m]={3,-2,7,-4,5},i,n;
n=0;
for (i=0;i<m;i++)
if (A[i]<0)
n=n+1;
cout << "Antar negativ n="
<< n
<< "\n";
return 0;
}

Fig.6.23

-4

Fushat numerike 115


Rezultati q shtypet n ekran, pr vlerat e shfrytzuara gjat vizatimit t
bllok-diagramit n Fig.6.23, pas ekzekutimit t programit t dhn, sht:
Antar negativ n=2
gj q shihet edhe nga rruga e vizatuar, kur npr bllokun n t cilin rritet
numratori n kalohet vetm dy her.
Numrimi mund t bhet edhe duke shtruar m shum kushte njkohsisht.
Shembull

Numrimi k i antarve negativ t vektorit F(m), por t


cilt pr nga vlera absolute jan m t mdhenj se numri
pozitiv x.

b. Rruga - pr x=3 dhe A=

a. Bllok-diagrami

-7

Fillimi
x,m,(fi,i=1,m)
k=0
i=1
Jo
fi<0
Po
Jo
|fi|>x
Po
k=k+1
i=i+1
Po

i m
Jo
k
Fundi

Fig.6.24
c. Programi

Fig.6.25

-5 -1

116 Algoritmet

// Programi Prg6_24
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int const m=5,x=3;
int F[m]={-7,4,-5,-1,6},i,k;
k=0;
for (i=0;i<m;i++)
if ((F[i]<0) && (abs(F[i])>x))
k=k+1;
cout << "Numri i krkuar k="
<< k
<< "\n";
return 0;
}

Pas ekzekutimit t programit t dhn, pr vlerat hyrse t shfrytzuara gjat


vizatimit t rrugs s kaluar n Fig.6.25, si rezultat n ekran shtypet:
Numri i krkuar k=2
meq vetm dy vlera numerike i plotsojn dy kushtet e shtruara (-7 dhe -5).
Bllok-diagrami mund t prpilohet edhe ashtu q brenda tij njkohsisht t
bhen disa numrime.
Shembull

a. Bllok-diagrami

Numri p i antarve pozitiv dhe numri n i antarve


negativ brenda vektorit A(m).

b. Rruga - pr A=

-3

-7

Fushat numerike 117


Fillimi
m,(ai,i=1,m)
p=0
n=0
i=1
Po

ai < 0

n=n+1

Jo

p=p+1

i=i+1
Po

i m
Jo
n,p
Fundi

Fig.6.26
c. Programi
// Programi Prg6_26
#include <iostream>
using namespace std;
int main()
{
int const m=5;int A[m]={2,-3,-7,4,1},i,p,n;
p=0;n=0;
for (i=0;i<m;i++)
if (A[i]<0)
n=n+1;
else
p=p+1;
cout << "Antar pozitiv p="
<< p
<< "\n";
cout << "Antar negativ n="
<< n
<< "\n";
return 0;

Fig.6.27

118 Algoritmet
}
Pr vlerat e shfrytzuara gjat vizatimit t rrugs s kaluar n Fig.6.27, pas
ekzekutimit t programit, si rezultat shtypet:

Antar pozitiv p=3


Antar negativ n=2
Gjat procedurs s numrimit t antarve t vektorit mund t krkohet q
njkohsisht t shtypen antart q i plotsojn, ose antart q nuk i plotsojn kushtet
e numrimit.

Shembull

Numri k i antarve t vektorit A(n) me vlera absolute


mes vlerave 3 dhe 8, duke shtypur njkohsisht antart me
vlera jasht ktij diapazoni, si dhe indekset prkatse.

a. Bllok-diagrami

b. Rruga - pr

A=

Fillimi
n,(ai,i=1,n)
k=0
i=1
Jo
ai>3
Po
Jo
ai<8
Po
k=k+1

i,ai

i=i+1
Po

i n
Jo
k
Fundi

Fig.6.28
c. Programi
// Programi Prg6_28

Fig.6.29

-7

Fushat numerike 119


#include <iostream>
using namespace std;
int main()
{
int const n=5;int A[n]={5,2,4,9,-7},i,k;
k=0;
for (i=0;i<n;i++)
{
if ((A[i]>3) && (A[i]<8))
k=k+1;
else
cout << "i="
<< i
<< " A["
<< i
<< "]="
<< A[i]
<< "\n";
}
cout << "Numri i krkuar k="
<< k
<< "\n";
return 0;
}

Nse ekzekutohet programi i dhn pr vlerat hyrse t shfrytzuara gjat


vizatimit t rrugs s kaluar n Fig.6.29, n ekran do t shtypen s pari indekset
dhe vlerat e antarve t cilt nuk i plotsojn kushtet:
i=1 A[1]=2
i=3 A[3]=9
i=4 A[4]=-7
dhe pastaj edhe numri i antarve q i plotsojn kushtet:
Numri i krkuar k=2
Detyra

T gjendet:
a. sa antar t vektorit t dhn Y(n), prnga vlera
absolute jan numra m t mdhenj se numri pozitiv x;
b. numri i antarve n vektorin e dhn T(m), t cilt jan
m t mdhenj se x e m t vegjl se y, ku x>y.

120 Algoritmet

Gjetja e antarve t caktuar


Shpeshher, gjat zgjidhjes s problemeve t ndryshme me kompjuter,
nevojiten vlera t caktuara brenda fushave numerike, si sht, p.sh., antari me
vler numerike minimale, ose antari me vler numerike maksimale. Procesi i
gjetjes s tyre fillon me prvetsimin e vlers fillestare t nj variable ndihmse,
tek e cila do t ruhet vlera e krkuar. Si vler fillestare e variabls ndihmse
merret kryesisht antari i par n vektor, ose vlera e saj formohet nga ky antar i
vektorit. Pastaj, krahasohen me vlern e variabls ndihmse t gjith antart e
tjer t vektorit. Sa her q gjat krahasimit vlera e antarit t vektorit, e cila
krahasohet, sht m e afrt me vlern e krkuar, ajo vler ruhet te variabla
ndihmse. N fund, pasi t krahasohen t gjith antart e vektorit, variabla
ndihmse e prmban vlern e krkuar.
Shembull

Gjetja e vlers maksimale x n vektorin e dhn A(n).

a. Bllok-diagrami

b. Rruga - pr

A=

Fillimi
m,(ai,i=1,m)
x=a1
i=2
x ai
Jo
x=ai

Po

i=i+1
Po

i m
Jo
x
Fundi

Fig.6.30

Fig.6.31

Fushat numerike 121


c. Testimi pr A=
Hapi Blloku
1

3
4
5
6
7
8
9
10
11
12
13
14
15
16

3
4
5
6
7
8
5
7
8
5
6
7
8
9

17

10

Urdhri
Fillimi
Lexo: m
(ai ,i=1,m)
x=a1
i=2
Pyet: xai
x=ai
i=i+1
Pyet:im
Pyet: xai
i=i+1
Pyet:im
Pyet: xai
x=ai
i=i+1
Pyet:im
Shtyp:x
Fundi

Vlerat numerike
merren

Rezultati

Fillimi i
algoritmit
prej njsis
m=4, a1 =3, a2 =7,
hyrse
a3 =7, a4 =9
x=3
a1 2
i=2
Jo
x3, i4, ai 2
X=7
i4, ai 2
i=2+1=3
i4,
Po
i7, m2
Po
x6, i7, ai 2
i=3+1=4
i7,
Po
i10, m2
x6, i10, ai 2 Jo
x=9
i10, ai 2
i=4+1=5
i10,
Jo
i14, m2
Shtypet numri 9
x13
Fundi i
algoritmit
-

Fig.6.32
d. Programi
// Programi Prg6_30
#include <iostream>
using namespace std;

int main()
{
int const m=4;
int A[m]={3,7,5,9},i,x;
x=A[0];
for (i=1;i<m;i++)
{
if (x>=A[i])
{
}
else

122 Algoritmet
x=A[i];
}
cout << "Numri m i madh x="
<< x
<< "\n";
return 0;
}

Pas ekzekutimit t programit, pr vlerat hyrse t shfrytzuara pr testimin e


bllok-diagramit, rezultati q shtypet n ekran sht:
Numri m i madh x=9
Gjat gjetjes s vlers s caktuar, si vler fillestare mund t merret edhe
antari i fundit n vektor.
Shembull

Gjetja e antarit me vler numerike m t vogl v pr nga


vlera absolute, n vektorin e dhn G(n).

a. Bllok-diagrami

b. Rruga - pr

A=

-7

Fillimi
n,(gi,i=1,n)
v=|gn|
i=n-1
v |gi|
Jo
v=|gi|

Po

i=i-1
Po
i > 0
Jo
v
Fundi

Fig.6.33

Fig.6.34

-6

-8

Fushat numerike 123


c. Programi
// Programi Prg6_33
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int const n=5;
int G[n]={-7,3,-6,4,-8},i,v;
v=abs(G[n-1]);
i=n-2;
do
{
if (v<=abs(G[i]))
{
}
else
v=abs(G[i]);
i--;
}
while (i>0);
cout << "Vlera m e vogl v="
<< v
<< "\n";
return 0;
}

Pr vlerat numerike t shfrytzuara gjat vizatimit t rrugs s kaluar n


bllok-diagramin e dhn n Fig.6.34, si rezultat shtypet:
Vlera m e vogl v=3
Si vler fillestare gjat gjetjes s antarit t caktuar n vektor mund t merret
edhe vlera e cilitdo antar brenda vektorit. Por, gjat ksaj duhet gjetur
ligjshmrin se si t bhet krahasimi i t gjitha vlerave t vektorit me vlern e
variabls ndihmse.
Prve vlers s antarit t caktuar, mund t krkohet edhe pozita e tij n
vektor, prkatsisht indeksi i tij.
Shembull

Gjetja e antarit me vler numerike m t madhe t pr nga


vlera absolute, si dhe pozita prkatse k n vektorin e dhn
Z(n).

124 Algoritmet
a. Bllok-diagrami

b. Rruga - pr

A=

-7

Fillimi
n,(zi,i=1,n)
t=|z1|
k=1
i=2
t < |zi|
Po
t=|zi|

Jo

k=i
i=i+1
Po

i n
Jo
k,t
Fundi

Fig.6.35
c. Programi
// Programi Prg6_35
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int const n=5;
int Z[n]={4,-7,2,9,-5},i,t,k;
t=abs(Z[0]);
k=0;
for (i=1;i<n-1;i++)

Fig.6.36

-5

Fushat numerike 125


{
if (t<abs(Z[i]))
{
t=abs(Z[i]);
k=i;
}
}
cout << "Vlera m e madhe ... t="
<< t
<< "\n";
cout << "Indeksi ............ k="
<< k
<< "\n";
return 0;
}

Nse programi i dhn ekzekutohet pr vlerat e antarve t vektorit Z t


shfrytzuara gjat vizatimit t rrugs s kaluar n Fig.6.36, rezultati q shtypet n
ekran sht:
Vlera m e madhe ... t=9
Indeksi ............ k=3
Brenda nj vektori mund t gjendet edhe antari i caktuar nga grumbulli i
vlerave numerike t antarve t cilt plotsojn kushte t fiksuara paraprakisht.
Kshtu, p.sh., mund t gjendet antari m i madh (m i vogl) n grumbullin e
antarve pozitiv (negativ) t vektorit, duke i marr si vlera reale, ose si vlera
absolute etj.
Shembull

Gjetja e antarit me vler numerike m t madhe d pr nga


vlera absolute, n grumbullin e antarve negativ t vektorit
A(n).

126 Algoritmet
a. Bllok-diagrami
Fillimi
n,(ai,i=1,n)
i=1

Po
ai < 0
Jo
i=i+1

d=|ai|
k=i+1

Po

i n

Jo
ak<0

Jo

Po

Jo

d>|ak|
d=|ak|

Po
k=k+1
Po

k n
Jo

Mesazhi

Fundi

Fig.6.37
Pjesa X e bllok-diagramit t dhn n Fig.6.37 shfrytzohet pr prcaktimin e
vlers fillestare t variabls d, n t ciln si rezultat do ruhet vlera e krkuar e
vektorit. N kt pjes, variabls d i shoqrohet vlera e antarit negativ, i cili
gjendet n procesin e krkimit, q fillon prej antarit t par t vektorit.
N pjesn Y, pasi paraprakisht sht prcaktuar vlera fillestare e variabls d,
procedura e krahasimit dhe e gjetjes s vlers absolute m t madhe n
grumbullin e antarve negativ fillon prej antarit k=i+1, ku i sht indeksi i
antarit t par negativ n vektor, i cili fitohet n pjesn X t bllok-diagramit.

Fushat numerike 127


b. Rruga - pr

A =

-2

-7

Fig.6.38
c. Programi
// Programi Prg6_37
#include <iostream>
#nclude <cmath>
using namespace std;

int main()
{
int const n=6;
int A[n]={3,-9,2,-6,7,-15},i,d,k;
i=0;

128 Algoritmet
do
{
if (A[i]<0)
goto Y;
i++;
}
while (i<n);
cout << "Nuk ka asnj vler negative"
<< "\n";
goto F;
Y:
d=abs(A[i]);
for (k=i+1;k<n;k++)
{
if (A[k]<0)
if (d>abs(A[k]))
{
}
else
d=abs(A[k]);
}
cout << "Vlera e gjetur d="
<< d
<< "\n";
F:
return 0;
}

Programi i dhn sht shkruar ashtu q pr nga struktura t'i ngjaj bllokdiagramit. Nse gjat krkimit n pjesn X nuk gjendet asnj antar negativ, sht
parapar q si rezultat t shtypet mesazhi prkats:
Nuk ka asnj vler negative
Pr vlerat e marra gjat vizatimit t rrugs s kaluar n Fig.6.38 rezultati q
shtypet n ekran sht:
Vlera e gjetur d=7
sepse, prej dy vlerave negative (-2 dhe -7), numri i dyt sht m i madh si
vler absolute.

Detyra

N vektorin e dhn F(n), t gjendet:

Fushat numerike 129

a. antari me vler numerike m t vogl v, si dhe indeksi


prkats k;
b. antari m i madh, n grupin e vlerave numerike, t cilat
sillen mes vlerave x dhe y, nse x<y.

Radhitja e antarve
Antart e vektorit t dhn A(n) mund t radhiten sipas madhsis, n
(n-1)-hapa, kshtu:
Hapi i par
(i=1)
Hapi i dyt
(i=2)
.............
Hapi i fundit (i=n-1)

a 1 krahasohet me a 2 ,a3 ,...,an


a 2 krahasohet me a 3 ,a4 ,...,an
...........
a n-1 krahasohet me a n .

N do hap t ndrmarr fiksohet vlera numerike e nj antari t vektorit, kurse


ngelin t pandryshuara vlerat numerike t antarve q jan fiksuar n hapat
paraprak. Gjat krahasimit t dy antarve, pr ndrrimin e vendeve t tyre
shfrytzohet nj variabl ndihmse, duke pasur parasysh radhn e cila sht
treguar n Fig.6.39, ku b sht variabla ndihmse, kurse ai dhe aj jan antart,
vlerat e t cilve i ndrrojn vendet mes vete.
2

ai
1

aj
3

Fig.6.39

Shembull

Radhitja sipas madhsis e vlerave numerike t antarve t


vektorit A(n), prej vlers m t vogl.

130 Algoritmet
a. Bllok-diagrami

b. Rruga - pr

A=

Fillimi
n,(ai,i=1,n)
i=1
j=i+1
aiaj
Jo
b=ai

Po

ai=aj
aj=b
j=j+1
Po

jn
Jo
i=i+1

Po
i n-1
Jo
(ai,i=1,n)
Fundi

Fig.6.40
c. Programi
// Programi Prg6_40
#include <iostream>
using namespace std;

int main()
{
int const n=4;

Fig.6.41

Fushat numerike 131


int A[n]={7,2,8,3},i,j,b;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
{
if (A[i]<=A[j])
{
}
else
{
b=A[i];
A[i]=A[j];
A[j]=b;
}
}
cout << "A=[ ";
for (i=0;i<n;i++)
cout << A[i]
<< " ";
cout << "]"
<< "\n";
return 0;
}

Ktu, meq si shembull sht marr vektori me n=4 antar, radhitja do t


kryhet n 3-hapa. Vlerat e antarve t vektorit n fund t do hapi jan:
Hapi i par (i=0):
Hapi i dyt (i=1):
Hapi i tret (i=2):

2
2
2

7
3
3

8
8
7

3
7
8

Vlerat e fiksuara n fund t hapit t tret jan vlerat e radhitura t vektorit sipas
madhsive, prej m t voglit kah m i madhi, dhe rezultati q shtypet pas
ekzekutimit t programit sht:
A=[

Bllok-diagrami i dhn n Fig.6.40 gjegjsisht programi prkats, vlen edhe


nse vektori prmban vlera numerike negative.
Antart e vektorit mund t radhiten edhe n baz t vlerave absolute.
Shembull

a. Bllok-diagrami

Radhitja sipas vlerave absolute t antarve t vektorit A(n),


prej vlers m t madhe.
b. Rruga - pr

A=

-7

-4

132 Algoritmet

Fillimi
n,(ai,i=1,n)
i=1
j=i+1

|ai||aj|

Jo

Po
b=ai
ai=aj
aj=b
j=j+1
Po

jn
Jo
i=i+1

Po
i n-1
Jo
(ai,i=1,n)
Fundi

Fig.6.42
c. Programi
// Programi Prg6_42
#include <iostream>
#include <cmath>
using namespace std;

int main()
{

Fig.6.43

Fushat numerike 133


int const n=4;
int A[n]={3,-7,5,-4},i,j,b;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
{
if (abs(A[i])>=abs(A[j]))
{
}
else
{
b=A[i];
A[i]=A[j];
A[j]=b;
}
}
cout << "A=[ ";
for (i=0;i<n;i++)
cout << A[i]
<< " ";
cout << "]"
<< "\n";
return 0;
}

Si rezultat, pas ekzekutimit t programit t dhn n ekran, do t shtypet


vektori me vlerat e radhitura brenda tij, kshtu:
A=[

-7

-4

meq sht krkuar radhitja n baz t vlerave absolute.


Detyra

T radhiten sipas madhsis antart e vektorit t dhn


G(m):
a. prej m t madhit kah m i vogli;
b. si vlera absolute, prej m t voglit kah m i madhi.

134 Algoritmet

Matricat
Gjat puns me matrica, pr t'i shfrytzuar antart e vendosur n fushat e
veanta t tyre, prdoren indekset e rreshtave dhe t kolonave prkatse.

Prcaktimi i matricave
Vlerat e antarve t matricave kompjuterit mund t'i jepen si vlera t gatshme
hyrse, ose duke i llogaritur ato n baz t procedurs s dhn.
Shembull

Formimi i matrics A(m,n), duke i llogaritur antart aij t


saj kshtu:

aij

2i + 3j

= i + j
3i j2

pr i < j
pr i = j
pr i > j

nse dihen dimensionet e matrics.

Fushat numerike 135


a. Bllok-diagrami
Fillimi
m,n
i=1
j=1
<

aij=2i+3j

i <>- j
=
aij=i+j
j=j+1

Po

j n
Jo
i=i+1

Po

i m
Jo

a ,i=1,m
ij j=1,n

Fundi

Fig.6.44

b. Rruga - pr m=2, n=3

>

aij=3i-j2

136 Algoritmet

Fig.6.45
c. Programi
// Programi Prg6_44
#include <iostream>
using namespace std;

int main()
{
int const m=2,n=3;
int i,j,A[m][n];
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (i<j)

Fushat numerike 137


A[i][j]=2*i+3*j;
else
if (i==j)
A[i][j]=i+j;
else
A[i][j]=3*i-j*j;
cout << "Matrica e formuar"
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
cout << A[i][j]
<< " ";
cout << "\n";
}
return 0;
}

Nse ekzekutohet programi i dhn, rezultati q shtypet n ekran sht:


Matrica e formuar
0
3
6
3
2
8
Ligjshmrit pr llogaritjen e antarve t matricave, prkatsisht pr
formimin e tyre, mund t jen t ndryshme.
Shembull

Formimi i matrics R(m,n), duke llogaritur antart e saj


kshtu:

rij

a. Bllok-diagrami

i + j+ 1
3 (k + 2i 3j)

= k =1

(i + j)!

pr i < j
pr i j

138 Algoritmet
Fillimi

s=

i+j+1

m,n

k =1

i=1

(k + 2i 3j)

j=1
Po

Jo

F=(i+j)!

i < j
s=0

F=1

k=1

k=1

s=s+(k+2i-3j)

F=Fk

k=k+1

k=k+1

Po

Po

k i+j+1
Jo
rij=3s

k i+j
Jo
rij=F

j=j+1
j n
i=i+1
i n

r ,i=1,m
ij j=1,n

Fundi

Fig.6.46

Fushat numerike 139


Ktu, nuk sht vizatuar edhe rruga q kalohet n bllok-diagram pr vlera t
caktuara t dimensioneve t matrics m dhe n, meq numri i tyre sht i madh,
gj q do t praktikohet edhe n shumicn e shembujve t pjess vijuese t librit.
b. Programi
// Programi Prg6_46
#include <iostream>
using namespace std;

int main()
{
int const m=2,n=3;
int i,j,k,s,f,R[m][n];
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (i<j)
{
s=0;
for (k=1;k<=(i+j+1);k++)
s=s+(k+2*i-3*j);
R[i][j]=3*s;
}
else
{
f=1;
for (k=1;k<=(i+j);k++)
f=f*k;
R[i][j]=f;
}
cout << "Matrica e formuar"
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
cout.width(5);
cout << R[i][j];
}
cout << "\n";
}
return 0;
}

140 Algoritmet

Nse ekzekutohet programi i dhn pr matricn me dimensione m=2 dhe


n=3, rezultati q shtypet n ekran sht:
Matrica e formuar
1
-9 -36
1
2 -18
Detyra

T formohet matrica katrore G(m,m), duke prcaktuar


elementet e saj kshtu:
a.

G =

j=1

...

i=1

...

-3

...

-3

-3

...

... ... ... ... ... ...


m

-3

-3

-3 ...

j=1

...

i=1

...

...

...

b.

G =

... ... ... ... ... ...


m

...

Matricat mund t formohen edhe duke shfrytzuar vlerat e antarve t


vektorve t dhn.

Fushat numerike 141


Shembull

Formimi i matrics katrore A(m,m), duke shfrytzuar


antart e vektorit t dhn D(m), kshtu:
j=1

A =

...

d1 +2 d1 +3 ... d1 +m

i=1

d1

d2 +8

d3 +8 d3 +8

d2

d2 +3 ... d2 +m
d3

... d3 +m

... ... ... ... ... ...


m

dm +8 dm +8 dm +8 ...

a. Bllok-diagrami

dm

Fillimi
m,(di,i=1,m)
i=1
j=1
<

aij=di+j

i <>- j
=
aij=di
j=j+1

Po

j m
Jo
i=i+1

Po

i m
Jo

a ,i=1,m
ij j=1,m

Fundi

Fig.6.47

>

aij=di+8

142 Algoritmet
Si shihet edhe nga bllok-diagrami, pr i<j duhet t mbushen antart mbi
diagonalen kryesore, kurse kur sht i>j kemi t bjm me antart nn
diagonalen kryesore.
b. Programi
// Programi Prg6_47
#include <iostream>
using namespace std;
int main()
{
int const m=5;
int D[m]={3,-7,4,9,-2};
int i,j,A[m][m];
for (i=0;i<m;i++)
for (j=0;j<m;j++)
if (i<j)
A[i][j]=D[i]+j;
else
if (i==j)
A[i][j]=D[i];
else
A[i][j]=D[i]+8;
cout << "Matrica e formuar"
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<m;j++)
{
cout.width(5);
cout << A[i][j];
}
cout << "\n";
}
return 0;
}

Rezultati q shtypet n ekran pas ekzekutimit t programit t dhn sht:


Matrica e formuar
3
4
5
6
7
1
-7
-5
-4
-3
12
12
4
7
8
17
17
17
9
13
6
6
6
6
-2
Me vlerat e antarve t vektorit, prve diagonales kryesore q u tregua n
shembullin e msiprm, mund t mbushet edhe nj rresht, ose nj kolon e
caktuar e matrics.

Fushat numerike 143


Shembull

Formimi i matrics G(m,m), duke i shfrytzzuar edhe


antart e vektorit B(m):
j=1
i=1 b1

G =

...

...

b2

...

b3

...

... ... ... ... ... ...


m

bm

...

a. Bllok-diagrami
Fillimi
m,(bi,i=1,m)
i=1
j=1
Po

Jo

j=1

gij=bj

gij=i

j=j+1
Po

j m
Jo
i=i+1

Po

i m
Jo

g ,i=1,m
ij j=1,m

Fundi

Fig.6.48

144 Algoritmet
b. Programi
// Programi Prg6_48
#include <iostream>
using namespace std;

int main()
{
int const m=5;
int B[m]={9,2,-4,6,-5};
int i,j,G[m][m];
for (i=0;i<m;i++)
for (j=0;j<m;j++)
if (j==0)
G[i][j]=B[i];
else
G[i][j]=i;
cout << "Matrica e formuar"
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<m;j++)
{
cout.width(5);
cout << G[i][j];
}
cout << "\n";
}
return 0;
}

Nse programi i dhn ekzekutohet, si rezultat n ekran do t fitohet:


Matrica e formuar
9
0
0
2
1
1
-4
2
2
6
3
3
-5
4
4

0
1
2
3
4

0
1
2
3
4

Fushat numerike 145

Detyra

T formohet matrica katrore A(m,m), nse antart e


vektorit t dhn R(m) brenda matrics vendosen kshtu:
a.

b.

a.

j=1
i=1

...

b.

...

i=1

A = ...

j=1

-5

A = ...

kurse pjest e tjera t matrics mbushen me numrat e dhn.

Formimi i matricave mund t mbshtetet edhe n shfrytzimin e antarve t


matricave t tjera.
Shembull

Formimi i matrics Z, duke shfrytzuar antart e matrics


A(m,m), kshtu:
j=1

...

m+1

i=1
2
A

Z = ...
m
m+1

146 Algoritmet
a. Bllok-diagrami
Fillimi
i=1,m
m, aij,j=1,m

i=1
j=1
zij=aij
j=j+1
Po

j m
Jo
zi,m+1=4
i=i+1

Po

i m
Jo
j=1
zm+1,j=9
j=j+1

Po

j m
Jo
zm+1,m+1=0
z ,i=1,m +1
ij j=1,m +1

Fundi

Fig.6.49

Fushat numerike 147


b. Programi
// Programi Prg6_49
#include <iostream>
using namespace std;

int main()
{
int const m=4;
int A[m][m]={ {3,5,-4,2},
{6,9,-2,8},
{1,-3,7,4},
{2,0,-5,3}
};
int i,j,Z[m+1][m+1];
for (i=0;i<m;i++)
{
for (j=0;j<m;j++)
Z[i][j]=A[i][j];
Z[i][m]=4;
}
for (j=0;j<m;j++)
Z[m][j]=9;
Z[m][m]=0;
cout << "Matrica e formuar"
<< "\n";
for (i=0;i<=m;i++)
{
for (j=0;j<=m;j++)
{
cout.width(5);
cout << Z[i][j];
}
cout << "\n";
}
return 0;
}

Pas ekzekutimit t programit, rezultati q shtypet n ekran sht:


Matrica e formuar
3
5
-4
6
9
-2
1
-3
7
2
0
-5
9
9
9

2
8
4
3
9

4
4
4
4
0

148 Algoritmet
Algoritmi pr formimin e matrics Z mund t realizohet edhe ndryshe, duke
parapar mbushjen e t gjitha pjesve t saj brenda unazave pr indekset i dhe
j, t cilat ndryshohen mes vlerave 1 dhe m+1, ashtu si sht treguar n vijim.
a. Bllok-diagrami
Fillimi
i=1,m
m, aij,j=1,m

i=1
j=1
Po
Po
zij=0

j=m+1

Jo

i=m+1

Jo

Po

zij=9

zij=4

j=j+1
Po
j m+1
Jo
i=i+1
Po
i m+1
Jo
z ,i=1,m +1
ij j=1,m +1

Fundi

Fig.6.50

j=m+1

Jo
zij=aij

Fushat numerike 149


b. Programi
// Programi Prg6_50
#include <iostream>
using namespace std;
int main()
{
int const m=4;
int A[m][m]={ {3,5,-4,2},
{6,9,-2,8},
{1,-3,7,4},
{2,0,-5,3}
};
int i,j,Z[m+1][m+1];
for (i=0;i<=m;i++)
for (j=0;j<=m;j++)
if (i==m)
if (j==m) Z[i][j]=0;
else
Z[i][j]=9;
else
if (j==m) Z[i][j]=4;
else
Z[i][j]=A[i][j];
cout << "Matrica e formuar"
<< "\n";
for (i=0;i<=m;i++)
{
for (j=0;j<=m;j++)
{
cout.width(5);
cout << Z[i][j];
}
cout << "\n";
}
return 0;
}

Detyra

Duke shfrytzuar antart e matrics X(m,m), t formohet


matrica R, kshtu:
a.
b.

-9

R =

R =

150 Algoritmet
Gjat formimit t matricave, pjes t caktuara t tyre mund t mbushen edhe
me vlerat e matricave t njohura, p.sh., si sht matrica njsi, ose matrica zero
etj.
Shembull

Formimi i matrics T, kshtu:


j=1 ...
i=1
.
:
T = n
n+1
.
:
2n

ku E(n,n) sht matrica njsi, kurse O(n,n) sht matrica


zero.

Fushat numerike 151


a. Bllok-diagrami
Fillimi
n
i=1
j=1
Po
Jo

i n
Po

i=j

tij=0

tij=1

tij=0

j=j+1
Po

j n
Jo
i=i+1

Po

i 2n
Jo
t ,i=1,2n
ij j=1,n

Fundi

Fig.6.51
b. Programi
// Programi Prg6_51
#include <iostream>
using namespace std;

int main()
{
int const n=5;
int i,j,T[2*n][n];

Jo

152 Algoritmet

for (i=0;i<(2*n);i++)
for (j=0;j<n;j++)
if (i<n)
if (i==j)
T[i][j]=1;
else
T[i][j]=0;
else
T[i][j]=0;
cout << "Matrica e formuar"
<< "\n";
for (i=0;i<(2*n);i++)
{
for (j=0;j<n;j++)
{
cout.width(3);
cout << T[i][j];
}
cout << "\n";
}
return 0;
}

Rezultati q shtypet n ekran pas ekzekutimit t programit t dhn sht:


Matrica
1 0
0 1
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0

e formuar
0 0 0
0 0 0
1 0 0
0 1 0
0 0 1
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

Fushat numerike 153

Detyra

T formohet matrica R, kshtu:


a.

j=1 ...
i=1
2
R = .
:
m

b.

m+1 ... 2m

j=1 ... m+1


i=1
2
R = .
:
m

ku E(m,m) sht matrica njsi, kurse O(m,m) sht matrica


zero.
Matricat mund t formohen edhe duke shfrytzuar njkohsisht m shum
matrica, me vlera t fardoshme.
Shembull

Formimi i matrics D nga antart e matricave A(m,m) dhe


B(m,m), kshtu:
j=1 ...
i=1
2
D = .
:
m

m+1 ... 2m

154 Algoritmet
a. Bllok-diagrami
Fillimi
i=1,m
i=1,m
m, aij,
, bij,j=1,m
=
j
1,
m

i=1
j=1
Po

j m

dij=aij

Jo
dij=bi,j-m

j=j+1
Po

j 2m
Jo
i=i+1

Po

i m
Jo
d ,i=1,m
ij j=1,2m

Fundi

Fig.6.52
b. Programi
// Programi Prg6_52
#include <iostream>
using namespace std;

int main()
{
int const m=3;
int A[m][m]={ {4,7,3},
{-2,3,9},

Fushat numerike 155


{8,-4,2}
};
int B[m][m]={ {-2,9,1},
{4,8,3},
{6,1,7}
};
int i,j,D[m][2*m];
for (i=0;i<m;i++)
for (j=0;j<(2*m);j++)
if (j<m)
D[i][j]=A[i][j];
else
D[i][j]=B[i][j-m];
cout << "Matrica e formuar"
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<(2*m);j++)
{
cout.width(4);
cout << D[i][j];
}
cout << "\n";
}
return 0;
}

Pas ekzekutimit t programit t dhn, rezultati q shtypet n ekran sht:


Matrica e formuar
4
7
3 -2
9
1
-2
3
9
4
8
3
8 -4
2
6
1
7

156 Algoritmet

Detyra

T formohet matrica G, duke shfrytzuar antart e matricave


A(m,n) dhe B(m,n), kshtu:
a.
b.

G =
G =

3
-6
B

Kur n formimin e matrics prdoren m shum matrica, mbushja e saj n


bllok-diagram mund t realizohet duke shfrytzuar pjes t veanta pr do
matric, ose prmes nj trsie t prbr pr t gjitha matricat.
Shembull

Formimi i matrics R, duke shfrytzuar antart e matricave


F(m,n) dhe G(l,k), kshtu:
j=1 ...

n+1 ... n+k

i=1
.
:
R = m
m+1

.
:
m+l

ku me 0 sht shnuar matrica zero.

Fushat numerike 157


a. Bllok-diagrami
Fillimi
m,n,l,k
f ,i=1,m , g ,i=1,l
ij j=1,n ij j=1,k

i=1
j=1
Po
Po

j n

rij=fij

Jo

i m

Jo

Po

rij=0

rij=0

j=j+1
Po
j n+k
Jo
i=i+1
Po
i m+l
Jo
r ,i=1,m +l
ij j=1,n+k

Fundi

Fig.6.53
b. Programi
// Programi Prg6_53
#include <iostream>
using namespace std;

int main()

j n

Jo
rij=gi-m,j-n

158 Algoritmet
{
int const m=3,n=4,l=4,k=3;
int F[m][n]={ {4,7,3,5},
{-2,3,9,2},
{8,-4,2,7}
};
int G[l][k]={ {-2,9,1},
{4,8,3},
{6,1,7},
{-9,4,2}
};
int i,j,R[m+l][n+k];
for (i=0;i<m+l;i++)
for (j=0;j<n+k;j++)
if (i<m)
if (j<n)
R[i][j]=F[i][j];
else
R[i][j]=0;
else
if (j<n)
R[i][j]=0;
else
R[i][j]=G[i-m][j-n];
cout << "Matrica e formuar"
<< "\n";
for (i=0;i<m+l;i++)
{
for (j=0;j<n+k;j++)
{
cout.width(4);
cout << R[i][j];
}
cout << "\n";
}
return 0;
}

Rezultati q do t shtypet n ekran, nse ekzekutohet programi i dhn,


sht:
Matrica e formuar
4
7
3
5
0
0
0
-2
3
9
2
0
0
0
8 -4
2
7
0
0
0
0
0
0
0 -2
9
1

Fushat numerike 159


0
0
0

0
0
0

0
0
0

0
0
0

4
6
-9

8
1
4

3
7
2

Ktu, si u theksua edhe m sipr, mund t zbatohet procedura e mbushjes


parciale t matrics. Kshtu, nse, p.sh., mbushet s pari pjesa e majt e matrics
dhe pastaj pjesa e djatht e saj, algoritmi prkats do t duket si n vijim.
a. Bllok-diagrami
Fillimi
m,n,l,k

f ,i=1,m , g ,i=1,l
ij j=1,n ij j=1,k

i=1
j=1
Po

Jo

i m

rij=fij

rij=0

j=j+1
Po
j n
Jo
i=i+1
Po
i m+l
Jo
A

160 Algoritmet

A
i=1
j=n+1
Po

Jo

i m

rij=0

rij=gi-m,j-n

j=j+1
Po
j n+k
Jo
i=i+1
Po
i m+l
Jo

r ,i=1,m +l
ij j=1,n+k

Fundi

Fig.6.54
b. Programi
Pjesa e programit pr mbushjen e matrics me vlera, e cila ndryshon nga
programi q u dha m sipr, duket si n vijim.
// Programi Prg6_54
.......................................
for (i=0;i<m+l;i++)
for (j=0;j<n;j++)
if (i<m)
R[i][j]=F[i][j];
else
R[i][j]=0;
for (i=0;i<m+l;i++)

Fushat numerike 161


for (j=n;j<n+k;j++)
if (i<m)
R[i][j]=0;
else
R[i][j]=G[i-m][j-n];
.............................................

Nse matricat q prdoren pr mbushje kan vlera t caktuara, gjat


vendosjes s vlerave n matric duhet pasur kujdes n indekset e antarve t
cilt shfrytzohen pr mbushje.
Shembull

Formimi i matrics F, duke shfrytzuar antart e matricave


A(m,n), B(m,k), C(l,n) dhe D(l,k), kshtu:
j=1 ...
i=1
.
.
.
F = m
m+1
.
.
.
m+l

n+1 ... n+k

162 Algoritmet

a. Bllok-diagrami
Fillimi
m,n,l,k
a ,i=1,m , b ,i=1,m
ij j=1,n ij j=1,k

c ,i=1,l , d ,i=1,l
ij j=1,n ij j=1,k

i=1
j=1
Po
Po
fij=aij

j n

Jo

i m

Jo

Po

fij=bi,j-n

fij=ci-m,j

j=j+1
Po
j n+k
Jo
i=i+1
Po
i m+l
Jo
f ,i=1,m +l
ij j=1,n+ k

Fundi

Fig.6.55

j n

Jo
fij=di-m,j-n

Fushat numerike 163

b. Programi
// Programi Prg6_55
#include <iostream>
using namespace std;

int main()
{
int const m=3,n=2,l=2,k=3;
int A[m][n]={ {4,7},
{-2,5},
{8,3}};
int B[m][k]={ {-1,9,6},
{2,3,8},
{4,1,5}
};
int C[l][n]={ {1,2},
{3,4}
};
int D[l][k]={ {5,4,3},
{2,1,0}
};
int i,j,F[m+l][n+k];
for (i=0;i<m+l;i++)
for (j=0;j<n+k;j++)
if (i<m)
if (j<n)
F[i][j]=A[i][j];
else
F[i][j]=B[i][j-n];
else
if (j<n)
F[i][j]=C[i-m][j];
else
F[i][j]=D[i-m][j-n];
cout << "Matrica e formuar"
<< "\n";
for (i=0;i<m+l;i++)
{
for (j=0;j<n+k;j++)
{
cout.width(4);
cout << F[i][j];
}
cout << "\n";
}

164 Algoritmet
return 0;
}

Pas ekzekutimit t programit, matrica F e shtypur n ekran duket kshtu:


Matrica e formuar
4
7 -1
9
-2
5
2
3
8
3
4
1
1
2
5
4
3
4
2
1
Detyra

6
8
5
3
0

T formohet matrica F, duke shfrytzuar antart e matricave


A(m,n) dhe B(k,l), si dhe matricn njsi E dhe matricn
zero 0, ashtu si sht treguar m posht.
a.
E

F=

b.

F=

c.

F=

d.

F=

Fushat numerike 165

Operacionet aritmetikore
Mbi antart e matricave mund t zbatohen operacionet elementare
aritmetikore.

Mbledhja dhe zbritja


Mblidhen vetm matricat t cilat kan dimensione t barabarta. Operacioni i
mbledhjes kryhet duke i mbledhur antart n pozicionet e njjta t dy matricave,
prkatsisht antart me indekse t njjt.
Shembull

Gejtja e shums C(m,n) t matricave A(m,n) dhe


B(m,n).

a11 a12 ... a1n


C = A+B =

a21 a22 ... a2n

b11 b12 ... b1n


+

b21 b22 ... b2n

... ... ... ...

... ... ... ...

am1 am2 ... amn

bm1 bm2 ... bmn

a11 +b11 a12 +b12

...

a1n +b1n

a21 +b21 a22 +b22

...

a2n +b2n

...

...

...

amn +bmn

...

...

am1 +bm1 am2 +bm2


c11 =a11 +b11
c12 =a12 +b12
.........
cij =aij +bij
.........
cmn =amn +bmn

166 Algoritmet
a. Bllok-diagrami
Fillimi
i=1,m
i=1,m
m,n, aij,j=1,n , bij,j=1,n

i=1
j=1
cij=aij+bij
j=j+1
Po

j n
Jo
i=i+1

Po

i m
Jo
c ,i=1,m
ij j=1,n

Fundi

Fig.6.56
c. Programi
// Programi Prg6_56
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=5;
int A[m][n]={ {4,7,8,-6,9},
{1,-2,5,4,6},
{8,3,2,-1,0},
{-3,5,8,4,1}
};
int B[m][n]={ {-1,6,9,6,4},

Fushat numerike 167


{2,3,7,4,-8},
{4,3,2,-1,5},
{9,-2,6,4,1}
};
int i,j,C[m][n];
for (i=0;i<m;i++)
for (j=0;j<n;j++)
C[i][j]=A[i][j]+B[i][j];
cout << "Matrica e formuar"
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
cout.width(4);
cout << C[i][j];
}
cout << "\n";
}
return 0;
}

Duke pasur parasysh vlerat hyrse pr matricat A dhe B, t cilat kompjuterit i


jan dhn si konstante, rezultati q shtypet n ekran pas ekzekutimit t
programit sht:
Matrica e
3 13
3
1
12
6
6
3

formuar
17
0 13
12
8 -2
4 -2
5
14
8
2

Operacioni i zbritjes kryhet plotsisht njlloj si edhe mbledhja, q do t thot se


shfrytzohet algoritmi, prkatsisht programi i njjt.

Shumzimi
Matrica shumzohet me vektor nse numri i kolonave t matrics sht i
barabart me numrin e antarve t vektorit. Rezultati q fitohet pas shumzimit
t matrics me vektor sht vektor, i cili do t ket aq antar sa ka rreshta
matrica.

168 Algoritmet
Shembull

Prodhimi T(m) i matrics A(m,n) me vektorin B(n).

a11 a12 ... a1n


a21 a22 ... a2n
T = AB =
... ... ... ...

b1

am1 am2 ... amn

b2

...
bn

a11 b1 +a12 b2 +...+a1n bn


=

a21 b1 +a22 b2 +...+a2n bn


...
am1 b1 +am2 b2 +...+amn bn

t1 =a11 b1 +a12 b2 +...+a1n bn


t2 =a21 b1 +a22 b2 +...+a2n bn
......................
ti =ai1 b1 +ai2 b2 +...+ain bn
......................
tm =am1 b1 +am2 b2 +...+amn bn

= a ij b j
j=1

Fushat numerike 169


a. Bllok-diagrami
Fillimi
m,n
a ,i=1,m
ij j=1,n

(bi,i=1,n)
i=1
s=0
j=1
s=s+aijbj
j=j+1
Po
j n
Jo
ti=s
i=i+1
Po
i m
Jo
(ti,i=1,m)
Fundi

Fig.6.57

b. Programi

170 Algoritmet

// Programi Prg6_57
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=5;
int A[m][n]={ {3,5,8,-1,4},
{7,-4,9,2,1},
{6,2,1,5,-7},
{2,4,6,-8,3}
};
int B[n]={-1,6,9,6,4};
int i,j,s,T[m];
for (i=0;i<m;i++)
{
s=0;
for (j=0;j<n;j++)
s=s+A[i][j]*B[j];
T[i]=s;
}
cout << "Vektori i prodhimit"
<< "\n";
cout << "T=[ ";
for (i=0;i<m;i++)
cout << T[i]
<< " ";
cout << "]"
<< "\n";
return 0;
}

Pas ekzekutimit t programit t dhn, rezultati i prodhimit n ekran shtypet


kshtu:
Vektori i prodhimit
T=[ 109 66 17 40 ]
Detyra

T gjendet:
a. matrica Y(m,n) si prodhim i matrics X(m,n) me
konstanten k;
b. vektori F(n) si prodhim i vektorit A(m) me matricn
B(m,n).

Fushat numerike 171

Dy matrica shumzohen, nse numri i kolonave t matrics s par sht i


barabart me numrin e rreshtave t matrics s dyt. Shumzimi i dy matricave e
jep si rezultat matricn tek e cila ruhet numri i rreshtave t matrics s par dhe
numri i kolonave t matrics s dyt.
Shembull

Gjetja e matrics C(m,n) si prodhim i matrics A(m,k)


me matricn B(k,n).

a11 a12 ... a1k


a21 a22 ... a2k
C = AB =
... ... ... ...
am1 am2 ... amk

b11 b12 ... b1n

b21 b22 ... b2n


... ... ... ...
bk1 bk2 ... bkn

c11 =a11 b11 +a12 b21 +...+a1k bk1


c12 =a11 b12 +a12 b22 +...+a1k bk2
........................
k

c1k =a11 b1n +a12 b2n +...+a1k bkn = ail b


lj
l=1
........................
cij =ai1 b1j +ai2 b2j +...+aik bkj
........................
cmn =am1 b1n +am2 b2n +...+amk bkn

172 Algoritmet

a. Bllok-diagrami
Fillimi
m,n,k
a ,i=1,m , b ,i=1,k
ij j=1,k ij j=1,n

i=1
j=1
s=0
l=1
s=s+ailblj
l=l+1
Po
l k
Jo
cij=s
j=j+1
Po
j n
Jo
i=i+1
Po
i m
Jo
i
=
1,
m
c ,
ij j=1,n

Fundi

Fig.6.58
b. Programi

Fushat numerike 173

// Programi Prg6_58
#include <iostream>
using namespace std;
int main()
{
int const m=4,n=5,k=3;
int A[m][k]={ {3,5,8},
{7,-4,9},
{6,2,1},
{2,4,6}
};
int B[k][n]={ {-1,6,9,6,4},
{2,6,8,4,-3},
{5,3,-2,5,9}
};
int i,j,l,s,C[m][n];
for (i=0;i<m;i++)
for (j=0;j<n;j++)
{
s=0;
for (l=0;l<k;l++)
s=s+A[i][l]*B[l][j];
C[i][j]=s;
}
cout << "Matrica e prodhimit C"
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
cout.width(5);
cout << C[i][j];
}
cout << "\n";
}
return 0;
}

Rezultati q fitohet n ekran pas ekzekutimit t programit t dhn sht:


Matrica e
47 72
30 45
3 51
36 54

prodhimit C
51 78 69
13 71 121
69 49 27
38 58 50

174 Algoritmet

Ekuacionet matricore
Duke u mbshtetur n rregullat e ekzekutimit t operacioneve elementare
aritmetikore t dhna m sipr, mund t formohen ekuacione matricore.
Shembull

Llogaritja e antarve t matrics R(m,k), nga matricat


X(m,k), Y(k,n) dhe Z(m,n), prmes ekuacionit
matricor:
R=XY-Z

Nga shprehja e ekuacionit t dhn shihet se s pari duhet llogaritur antart


e prodhimit XY dhe pastaj, prmes zbritjes prkatse, gjendet rezultati R i
ekuacionit matricor.

Fushat numerike 175

a. Bllok-diagrami
Fillimi
m,n,k

x ,i=1,m , y ,i=1,k , z ,i=1,m


ij j=1,k ij j=1,n ij j=1,n

i=1
j=1
s=0
l=1
s=s+ailblj

s=

a il b lj

l =1

l=l+1
Po
l k
Jo
rij=s-zij
j=j+1
Po
j n
Jo
i=i+1
Po
i m
Jo
z ,i=1,m
ij j=1,n

Fundi

Fig.6.59

176 Algoritmet
b. Programi
// Programi Prg6_59
#include <iostream>
using namespace std;
int main()
{
int const m=4,n=5,k=3; int i,j,l,s,R[m][n];
int X[m][k]={ {3,5,8},
{7,-4,9},
{6,2,1},
{2,4,6}};
int Y[k][n]={ {-1,6,9,6,4},
{2,6,8,4,-3},
{5,3,-2,5,9}};
int Z[m][n]={ {3,4,6,2,-1},
{9,1,3,-5,2},
{7,-2,1,4,8},
{-2,5,3,1,4}};
for (i=0;i<m;i++)
for (j=0;j<n;j++)
{
s=0;
for (l=0;l<k;l++)
s=s+X[i][l]*Y[l][j];
R[i][j]=s-Z[i][j];
}
cout << "Matrica e rezultatit R"
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
cout.width(4);
cout << R[i][j];
}
cout << "\n";
}
return 0;
}

Zgjidhja e ekuacionit do t shtypet n ekran si matric:


Matrica e
44 68
21 44
-4 53
38 49

rezultatit R
45 76 70
10 76 119
67 45 19
35 57 46

Fushat numerike 177

Antart n vektor
Duke shfrytzuar antart e matricave, mund t formohen vektor t
ndryshm. P.sh., me qllim t sortimit sipas madhsis t antarve t matrics
s dhn, vlerat e tyre mund t vendosen n vektor, p.sh., duke shkuar sipas
rreshtave t matrics. Pastaj, sortimi i vlerave t antarve t vektorit bhet ashtu
si u tregua m par.
Shembull

Vendosja e antarve t matrics A(m,n) n vektorin


Z(mn).

a. Bllok-diagrami
Fillimi
i = 1,m

m, n, aij,
j
= 1,n

k=0
i=1
j=1
k=k+1
zk=aij
j=j+1
Po
j n
Jo
i=i+1
Po
i m
Jo
(zi,i=1,k)
Fundi

Fig.6.60

178 Algoritmet
Ktu, numratori k shfrytzohet pr prcaktimin e indeksit t pozits n
vektor t antarve t veant t matrics.
b. Programi
// Programi Prg6_60
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=3;
int A[m][n]={ {3,-4,6},
{-9,1,2},
{7,-8,1},
{-2,5,-3}
};
int i,j,k,Z[m*n];
k=-1;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
{
k=k+1;
Z[k]=A[i][j];
}
cout << "Z=[";
for (i=0;i<=k;i++)
{
cout.width(3);
cout << Z[i];
}
cout << " ]\n";
return 0;
}

Vektori q shtypet n ekran pas ekzekutimit t programit t dhn sht:


Z=[

3 -4

6 -9

7 -8

1 -2

5 -3

Mbushja e vektorit mund t bhet vetm me antar t matrics q kan vlera


t caktuara.
Shembull

Mbushja e vektorit Z me antart e matrics A(m,n) q


kan vlera negative.

Fushat numerike 179


Pr caktimin e pozitave t antarve q marrin pjes n formimin e vektorit
duhet t shfrytzohet nj numrator, p.sh. k, i cili n kt rast rritet pr 1 sa
her q gjendet antar me vler numerike negative. Vlera prfundimtare e
numratorit, vetm nse t gjith antart e matrics jan numra negativ, do t
jet e barabart me numrin e antarve t matrics.
a. Bllok-diagrami
Fillimi
i = 1,m

m, n, aij,
j
= 1,n

k=0
i=1
j=1
Jo
aij < 0
Po
k=k+1
zk=aij
j=j+1
Po

jn
Jo
i=i+1

Po

im
Jo
(zi,i=1,k)
Fundi

Fig.6.61
b. Programi

180 Algoritmet

// Programi Prg6_61
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=3;
int A[m][n]={ {3,-4,6},
{-9,1,2},
{7,-8,1},
{-2,5,-3}
};
int i,j,k,Z[m*n];
k=-1;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (A[i][j]<0)
{
k=k+1;
Z[k]=A[i][j];
}
cout << "Z=[";
for (i=0;i<=k;i++)
{
cout.width(3);
cout << Z[i];
}
cout << " ]\n";
return 0;
}

Rezultati q shtypet n ekran pas ekzekutimit t programit, pr shembullin e


vlerave t matrics A, do t duket kshtu:
Z=[ -4 -9 -8 -2 -3 ]
Me vlerat e ndyshme t matricave mund t mbushen njkohsisht disa
vektor.
Shembull

Mbushja e vektorve F dhe G me antar pozitiv dhe


negativ t matrics A(m,n).

Fushat numerike 181


Ktu, pr secilin vektor duhet t shfrytzohet nj numrator i veant i
antarve t matrics t cilt jan vendosur n vektorin prkats.
a. Bllok-diagrami
Fillimi
i = 1,m

m, n, aij,
j= 1,n

x=0
y=0
i=1
j=1
Po

aij < 0

x=x+1

y=y+1

fx=aij

gy=aij

j=j+1
Po

j n
Jo
i=i+1

Po

i m
Jo
(fi,i=1,x)
(gi,i=1,y)
Fundi

Fig.6.62
b. Programi

Jo

182 Algoritmet

// Programi Prg6_62
#include <iostream>
using namespace std;
int main()
{
int const m=4,n=3; int i,j,x,y,F[m*n],G[m*n];
int A[m][n]={ {3,-4,6},
{-9,1,2},
{7,-8,1},
{-2,5,-3}};
x=-1;y=-1;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (A[i][j]<0)
{
x=x+1; F[x]=A[i][j];
}
else
{
y=y+1; G[y]=A[i][j];
}
cout << "F=[";
for (i=0;i<=x;i++)
{
cout.width(3);
cout << F[i];
}
cout << " ]\n";
cout << "G=[";
for (i=0;i<=y;i++)
{
cout.width(3);
cout << G[i];
}
cout << " ]\n";
return 0;
}

Vektort t cilt shtypen n ekran pas ekzekutimit t programit t dhn


duken kshtu:
Z=[ -4 -9 -8 -2 -3 ]
G=[ 3 6 1 2 7 1

5 ]

Vlerat e antarve t matricave mund t vendosen n vektor edhe t


ndryshuar n baz t nj ligjshmrie t caktuar.
Shembull

Mbushja e vektorit F me katrort e antarve pozitiv t

Fushat numerike 183


matrics A(m,n), por t cilt jan m t vegjl se numri
pozitiv x.
a. Bllok-diagrami
Fillimi

i = 1,m

m, n, x, a ij,
j
= 1,n

k=0
i=1
j=1
aij > 0

Jo

Po
aij < x
Po
k=k+1
fk=aij2
j=j+1
Po

j n
Jo
i=i+1

Po

i m
Jo
(fi,i=1,k)
Fundi

Fig.6.63

Jo

184 Algoritmet
b. Programi
// Programi Prg6_63
#include <iostream>
using namespace std;

int main()
{
int const x=6,m=4,n=3;
int A[m][n]={ {3,-4,6},
{-9,1,2},
{7,-8,4},
{-2,5,-3}
};
int i,j,k,F[m*n];
k=-1;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if ((A[i][j]>=0) && (A[i][j]<x))
{
k=k+1;
F[k]=A[i][j]*A[i][j];
}
cout << "F=[";
for (i=0;i<=k;i++)
{
cout.width(3);
cout << F[i];
}
cout << " ]\n";
return 0;
}

Rezultati i programit t dhn n ekran shtypet kshtu:


F=[

4 16 25 ]

Vektort mund t mbushen edhe duke i shfrytzuar antart e matrics t


cilt gjenden n rreshtat ose n kolonat e caktuara t matrics.
Shembull

a. Bllok-diagrami

Mbushja e vektorit F me sinuset e antarve pozitiv t


matrics A(m,n), por t cilt gjenden n rreshtat ift.

Fushat numerike 185


Fillimi
i = 1,m

m, n, aij,
j
= 1,n

k=0
i=2
j=1
Jo
aij > 0
Po
k=k+1
fk=sin(aij)
j=j+1
Po

jn
Jo
i=i+2

Po

im
Jo
(fi,i=1,k)
Fundi

Fig.6.64
b. Programi
// Programi Prg6_64
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int const m=4,n=3;
int A[m][n]={ {3,-5,6},

186 Algoritmet
{-9,1,2},
{7,-8,4},
{-2,5,-3}
};
int i,j,k;
double F[m*n];
k=-1;
i=1;
do
{
for (j=0;j<n;j++)
if (A[i][j]>=0)
{
k=k+1;
F[k]=sin(A[i][j]);
}
i=i+2;
}
while (i<=m);
cout << "F=[";
for (i=0;i<=k;i++)
{
cout.precision(3);
cout.width(7);
cout << F[i];
}
cout << " ]\n";
return 0;
}

Vektori q formohet prmes programit t dhn, n ekran do t shtypet


kshtu:
F=[

0.841

0.909 -0.959 ]

ku tre antart e vektorit n fakt jan sinuset e vlerave numerike 1, 2 dhe 5, t


antarve pozitiv t matrics A t cilt gjenden n rreshtat ift.

Veprime t tjera
Prve veprimeve t prmendura m sipr, pr pjes t caktuara t matrics,
si jan rreshtat, kolonat, pjesa mbi, n ose nn diagonalen kryesore t matrics,
ose pr komplet matricn, mund t gjendet shuma, prodhimi, t numrohen ose
t gjenden antar t caktuar etj.

Fushat numerike 187

Shuma dhe prodhimi


Procedura e llogaritjes s shums ose e prodhimit t antarve t matrics
nuk dallon nga ajo q zbatohet te vektort, me prjashtim t asaj se ktu
operohet me dy indekse.
Shembull

Llogaritja e shums s antarve t matrics A(m,n).

s = a11 + a12 + ... + a1n


+ a21 + a22 + ... + a2n
+ ..................
+ a m1 + a m2 + ... + a mn
m

= aij
i = 1j= 1

a. Bllok-diagrami

Fillimi

i = 1,m

m, n, aij,
j
= 1,n

s=0
i=1

j=1
s=s+aij
j=j+1
Po

jn
Jo
i=i+1

Po

im
Jo
s
Fundi

Fig.6.65

188 Algoritmet
b. Programi
// Programi Prg6_65
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=5;
int A[m][n]={ {3,-5,6,7,2},
{-9,1,2,5,8},
{7,-8,4,3,9},
{6,5,-3,4,8}
};
int i,j,s;
s=0;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
s=s+A[i][j];
cout << "Shuma s="
<< s
<< "\n";
return 0;
}

Nse ekzekutohet programi i dhn, rezultati q shtypet n ekran sht:


Shuma s=55
dhe numri i fituar e paraqet shumn e t gjith antarve t matrics.
Pr matricn e dhn mund t llogaritet shuma ose prodhimi i pjesve t
caktuara t matrics, gj q prcaktohet prmes zgjedhjes s indekseve prkatse.
Shembull

a. Bllok-diagrami

Llogaritja e shums s t antarve n rreshtat e matrics


A(m,n).

Fushat numerike 189

Fillimi
i = 1,m

m, n, aij,
j
= 1,n

i=1
s=0
j=1
aij
s=s+aij
j=j+1
Po

jn
Jo
s
i=i+1

Po

im
Jo
Fundi

Fig.6.66
b. Programi
// Programi Prg6_66
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=5;
int A[m][n]={ {3,-5,6,7,2},
{-9,1,2,5,8},
{7,-8,4,3,9},

190 Algoritmet
{6,5,-3,4,8}
};
int i,j,s;
for (i=0;i<m;i++)
{
s=0;
for (j=0;j<n;j++)
{
cout.width(4);
cout << A[i][j];
s=s+A[i][j];
}
cout << "
s="
<< s
<< "\n";
}
return 0;
}

Nse ekzekutohet programi i dhn, pr vlerat e matrics s marr si


shembull, rezultati q shtypet n ekran sht:
3 -5 6
-9 1 2
7 -8 4
6 5 -3

7
5
3
4

2
8
9
8

s=13
s=7
s=15
s=20

Njkohsisht mund t llogariten edhe m shum vlera pr pjes t caktuara t


matrics, si jan, p.sh., antart mbi diagonal, n diagonal ose nn diagonal.
Shembull

a. Bllok-diagrami

Llogaritja e shums s t antarve mbi diagonalen kryesore


dhe prodhimit p t antarve n diagonalen kryesore t
matrics A(m,m).

Fushat numerike 191


Fillimi
i = 1,m

m, aij,
= 1,m
j

s=0
p=1
i=1
j=1
Po

i < j
Jo
i = j
Po
p=paij

s=s+aij

j=j+1
Po

j m
Jo
i=i+1

Po

i m
Jo
s,p
Fundi

Fig.6.67

b. Programi

Jo

192 Algoritmet
// Programi Prg6_67
#include <iostream>
using namespace std;

int main()
{
int const m=5;
int A[m][m]={ {4,3,5,-7,1},
{-5,6,4,9,2},
{3,-4,7,6,1},
{8,3,-2,5,9},
{6,4,8,-3,7}
};
int i,j,s,p;
s=0;
p=1;
for (i=0;i<m;i++)
for (j=0;j<m;j++)
if (i<j)
s=s+A[i][j];
else
if (i==j)
p=p*A[i][j];
cout << "Shuma
s="
<< s
<< "\n"
<< "Prodhimi p="
<< p
<< "\n";
return 0;
}

Pas ekzekutimit t programit, pr vlerat e antarve t matrics, e cila sht


marr si shembull, rezultati q shtypet n ekran sht:
Shuma
s=33
Prodhimi p=5880

Numrimi i antarve t caktuar


Brenda nj matrice mund t numrohen antar t caktuar t matrics, p.sh.,
antart negativ, pozitiv, m t mdhenj ose m t vegjl se vlera t dhna etj.
Shembull
Numrimi i antarve pozitiv x, negativ y dhe zero z, n
matricn e dhn A(m,n).
a. Bllok-diagrami

Fushat numerike 193


Fillimi
i = 1,m

m, n, aij,
= 1,n
j

x=0
y=0
z=0
i=1
j=1
Po

aij > 0
Jo
aij < 0

Jo

Po
x=x+1

y=y+1
j=j+1
Po

j n
Jo
i=i+1

Po

i m
Jo
x,y,z
Fundi

Fig.6.68
b. Programi
// Programi Prg6_68
#include <iostream>

z=z+1

194 Algoritmet
using namespace std;

int main()
{
int const m=4,n=5;
int A[m][n]={ {3,-5,6,7,2},
{-9,1,0,-7,8},
{0,-8,4,3,9},
{6,5,-3,0,8}
};
int i,j,x,y,z;
x=0;y=0;z=0;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (A[i][j]>0)
x=x+1;
else
if (A[i][j]<0)
y=y+1;
else
z=z+1;
cout << "Antar pozitiv x="
<< x
<< "\n"
<< "Antar negativ y="
<< y
<< "\n"
<< "Antar zero
z="
<< z
<< "\n";
return 0;
}

Pr shembullin e matrics s marr n program, pas ekzekutimit t


programit, numrat e krkuar do t shtypen kshtu:
Antar pozitiv x=12
Antar negativ y=5
Antar zero
z=3
Numrimi i antarve mund t zbatohet edhe n pjes t veanta t matrics.
Shembull
Numrimi i antarve pozitiv x dhe negativ y n rreshtat e
veant t matrics A(m,n), pa antart me vler zero.

a. Bllok-diagrami

Fushat numerike 195


Fillimi
i = 1,m

m, n, aij,
j
= 1,n

i=1
x=0
y=0
j=1
Po

aij > 0

Jo

Po
aij < 0
Jo

x=x+1

y=y+1
aij
j=j+1

Po

jn
Jo
x,y
i=i+1

Po

im
Jo
Fundi

Fig.6.69

b. Programi
// Programi Prg6_69
#include <iostream>
using namespace std;

196 Algoritmet
int main()
{
int const m=4,n=5;
int A[m][n]={ {1,-8,-5,7,2},
{-6,0,-4,3,-8},
{4,-8,0,3,2},
{-1,0,-3,9,0}
};
int i,j,x,y;
for (i=0;i<m;i++)
{
x=0;
y=0;
for (j=0;j<n;j++)
{
if (A[i][j]>0)
x=x+1;
else
if (A[i][j]<0)
y=y+1;
cout.width(3);
cout << A[i][j];
}
cout << "
x="
<< x
<< " y="
<< y
<< "\n";
}
return 0;
}

Pr shembullin e matrics s marr n program, rezultati q shtypet n ekran


sht:
1 -8 -5
-6 0 -4
4 -8 0
-1 0 -3

7 2
3 -8
3 2
9 0

x=3
x=1
x=3
x=1

y=2
y=3
y=1
y=2

Antart e caktuar mund t numrohen edhe vetm n nj pjes t matrics.


Shembull

Numrimi i antarve nn diagonalen kryesore t matrics


A(m,m), t cilt jan m t mdhenj se 2 dhe m t vegjl
se 7.

Fushat numerike 197

a. Bllok-diagrami
Fillimi

i = 1,m

m, aij,
j= 1,m

n=0
i=2
j=1
Jo
aij > 2
Po
aij < 7
Po
n=n+1
j=j+1
Po

j i-1
Jo
i=i+1

Po

i m
Jo
n
Fundi

Fig.6.70
b. Programi
// Programi Prg6_70
#include <iostream>
using namespace std;

Jo

198 Algoritmet
int main()
{
int const m=5;
int A[m][m]={ { 4, 3, 5,-7, 1},
{-5, 6, 4, 9, 2},
{ 3, 9, 7, 6, 1},
{ 1,-3,-2, 5, 9},
{ 6, 5, 8, 4, 7}
};
int i,j,n;
n=0;
for (i=1;i<m;i++)
for (j=0;j<=i-1;j++)
{
if ((A[i][j]>2) && (A[i][j]<7))
n=n+1;
}
cout << "Numri i krkuar n="
<< n
<< "\n";
return 0;
}

Pas ekzekutimit t programit, pr shembullin e matrics s marr, rezultati q


shtypet n ekran sht:
Numri i krkuar n=4

Gjetja e vlers s caktuar


Plotsisht njlloj si te vektort, edhe te matricat mund t gjendet antari i
caktuar, si sht, p.sh., antari minimal, ose antari maksimal etj. Procedura e
gjetjes edhe ktu fillon me prvetsimin e nj vlere fillestare t nj variable
ndihmse, tek e cila n fund merret edhe rezultati i krkuar. Si vler fillestare
rregullisht merret antari i par n matric, ose kjo vler formohet nga ky antar i
matrics.
Shembull

a. Bllok-diagrami

Gjetja e vlers minimale z n matricn A(m,n).

Fushat numerike 199


Fillimi
i = 1,m

m, n, aij,
j
= 1,n

z=a11
i=1
j=1
Jo
aij < z
Po
zk=aij
j=j+1
Po

jn
Jo
i=i+1

Po

im
Jo
z
Fundi

Fig.6.71
Ktu, pr i=1 dhe j=1 do t krahasohet antari i par i matrics me
vetveten, gj q imponohet si krahasim i domosdoshm, meq nse merret i=1
dhe j=2, pr vlerat e tjera t variabls i, gjat krahasimit do t kaprcehen
antart e kolons s par t matrics.

b. Programi

200 Algoritmet

// Programi Prg6_71
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=5;
int A[m][n]={ {3,-5,6,7,2},
{-9,1,2,5,8},
{7,-8,4,3,9},
{6,5,-3,4,8}
};
int i,j,z;
z=A[0][0];
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (A[i][j]<z)
z=A[i][j];
cout << "Vlera minimale z="
<< z
<< "\n";
return 0;
}
Rezultati q shtypet n ekran pas ekzekutimit t programit sht:
Vlera minimale z=-9
N matric, prve antarit t caktuar, mund t gjendet edhe pozita e tij,
prkatsisht indekset prkatse.
Shembull

Antari m i madh pr nga vlera absolute x si dhe pozita e


tij, prkatsisht indekset f dhe g, n matricn e dhn
A(m,n).

Fushat numerike 201


a. Bllok-diagrami
Fillimi
i = 1,m

m, n, aij,
j= 1,n

x=|a11|
f=1
g=1
i=1
j=1
|aij| > x
Po
x=|aij|
f=i
g=j
j=j+1
Po

jn
Jo
i=i+1

Po

im
Jo
f,g,x
Fundi

Fig.6.72
b. Programi

Jo

202 Algoritmet
// Programi Prg6_72
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int const m=4,n=5;
int A[m][n]={ {3,-5,8,7,2},
{-4,1,2,5,8},
{7,-9,4,3,2},
{6,5,-3,4,7}
};
int i,j,f,g,x;
x=abs(A[0][0]);
f=1;g=1;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (abs(A[i][j])>x)
{
x=abs(A[i][j]);
f=i;
g=j;
}
cout << "Vlera maksimale absolute x: "
<< x
<< "\n"
<< "Pozita ............... f,g: "
<< f
<< ","
<< g
<< "\n";
return 0;
}

Pas ekzekutimit t programit, pr shembullin e matrics s marr n


program, rezultati q shtypet n ekran sht:
Vlera maksimale absolute x: 9
Pozita ............... f,g: 2,1
Antari i caktuar mund t gjendet edhe pr do rresht ose kolon, si dhe pr
pjes t caktuar t matrics.
Shembull

Antari m i madh pr do rresht t matrics A(m,n).

Fushat numerike 203

a. Bllok-diagrami
Fillimi
i = 1,m

m, n, aij,
j= 1,n

i=1
x=ai1
j=1
aij > x
Po
x=aij
aij
j=j+1
Po

jn
Jo
x
i=i+1

Po

im
Jo
Fundi

Fig.6.73

b. Programi

Jo

204 Algoritmet
// Programi Prg6_73
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=5;
int A[m][n]={ {3,-5,8,7,2},
{-4,1,2,6,-3},
{7,-9,4,3,2},
{9,5,-3,4,1}
};
int i,j,x;
for (i=0;i<m;i++)
{
x=A[i][1];
for (j=0;j<n;j++)
{
if (A[i][j]>x)
x=A[i][j];
cout.width(3);
cout << A[i][j];
}
cout << "
x="
<< x
<< "\n";
}
return 0;
}

Pas ekzekutimit t programit, rezultati n ekran duket kshtu:


3 -5 8
-4 1 2
7 -9 4
9 5 -3

7 2
6 -3
3 2
4 1

x=8
x=6
x=7
x=9

Vlera e caktuar mund t gjendet edhe vetm n nj pjes t matrics.


Shembull

a. Bllok-diagrami

Antari m i madh mbi diagonaln kryesore x dhe nn


diagonalen kryesore y, t matrics s dhn A(m,n).

Fushat numerike 205

Fillimi
i = 1,m

m, n, aij,
j
= 1,n

x=a12
y=a21
i=1
j=1
i j

Jo

Po
Po
Jo

i<j

aij > x

aij > y

Po

Po

x=aij

y=aij
j=j+1
Po

j n
Jo
i=i+1

Po

i m
Jo
x,y
Fundi

Fig.6.74

b. Programi

Jo
Jo

206 Algoritmet

// Programi Prg6_74
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=5;
int A[m][n]={ {3,-5,8,7,2},
{-4,1,2,6,-3},
{7,-9,6,3,4},
{9,5,-3,4,1}
};
int i,j,x,y;
x=A[0][1];
y=A[1][0];
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (i!=j)
if (i<j)
if (A[i][j]>x)
x=A[i][j];
else
{
}
else
if (A[i][j]>y)
y=A[i][j];
else
{
}
cout << "Mbi diagonale x="
<< x
<< "\n"
<< "Nn diagonale y="
<< y
<< "\n";
return 0;
}

Pas ekzekutimit t programit t dhn, rezultati n ekran shtypet kshtu:


Mbi diagonale x=8
Nn diagonale y=9

Fushat numerike 207


Detyra

N matricn e dhn A(m,n), t gjendet:


a. antari me vler numerike m t madhe;
b. antari me vler absolute m t vogl si dhe pozita e tij n
matric;
c. antari m i vogl pr do kolon;
d. antari m i madh n do rresht tek;
e. antari m i vogl pr nga vlera absolute n kolonat ift
t matrics;
f. antari m i madh pr do rresht, duke marr vetm vlerat
t cilat gjenden mbi diagonalen kryesore.

N matric mund t gjenden edhe vlerat mesatare t antarve t matrics,


antarve n rreshtat ose n kolonat e veanta, antarve mbi, n ose nn
diagonalen kryesore etj.
Shembull

x =

Vlerat mesatare x t rreshtave t veant t matrics


A(m,n).

1 n
aij , pr i = 1,2,..., m.
n j= 1

208 Algoritmet
a. Bllok-diagrami
Fillimi
i = 1,m

m, n, aij,
j= 1,n

i=1
s=0
j=1

s=s+aij
aij
j=j+1
Po

j n
Jo
x =

s
n

x
i=i+1
Po

i m
Jo
Fundi

Fig.6.75

Fushat numerike 209


b. Programi
// Programi Prg6_75
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=5;
int A[m][n]={ {7,3,4,9,5},
{6,1,2,4,8},
{7,6,4,1,2},
{9,5,3,8,7}
};
int i,j;
double s,x;
for (i=0;i<m;i++)
{
s=0;
for (j=0;j<n;j++)
{
s=s+A[i][j];
cout.width(3);
cout << A[i][j];
}
x=s/n;
cout << "
x="
<< x
<< "\n";
}
return 0;
}

Rezultati i programit t dhn, pas ekzekutimit t tij, n ekran do t shtypet


kshtu:
7
6
7
9

3
1
6
5

4
2
4
3

9
4
1
8

5
8
2
7

x=5.6
x=4.2
x=4
x=6.4

210 Algoritmet

Detyra

Pr matricn A(m,m), t gjendet vlera mesatare:


a. e t gjith antarve;
b. e antarve pozitiv;
c. e vlerave absolute t antarve negativ;
d. e antarve t diagonales kryesore;
e. e antarve mbi diagonalen kryesore;
f. e antarve nn diagonalen kryesore;
g. e kolonave t veanta.

Fshirja e rreshtave dhe e kolonave


Gjat zgjidhjes s problemeve t ndryshme, duke shfrytzuar matricat,
shpesh her n matrica duhet fshir rreshta, kolona, ose rreshta e kolona
njkohsisht. Problemi kryesor ktu qndron n zhvendosjen lart t rreshtave q
gjenden pas rreshtit q fshihet, prkatsisht zhvendosjen majt t kolonave q
gjenden pas kolons q fshihet.
Shembull

Formimi i matrics B(m-1,n) nga antart e matrics


A(m,n), pasi n t t fshihet rreshti i l-t.

Fushat numerike 211


a. Bllok-diagrami
Fillimi
i = 1,m

m, n, l, aij,
j= 1,n

i=1
j=1
Po

i<l

bij=aij

bij=ai+1,j
j=j+1

Po

j n
Jo
i=i+1

Po

Jo

i m-1
Jo
i = 1,m -1

bij,j= 1,n

Fundi

Fig.6.76
b. Programi
// Programi Prg6_76
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=5,l=2;
int A[m][n]={ {7,-3,4,-9,5},
{6,1,-2,4,-8},
{-7,6,-4,1,2},

212 Algoritmet
{9,-5,3,8,-6}
};
int i,j,B[m][n];
for (i=0;i<m-1;i++)
for (j=0;j<n;j++)
if (i<1)
B[i][j]=A[i][j];
else
B[i][j]=A[i+1][j];
cout << "Matrica B"
<< "\n";
for (i=0;i<m-1;i++)
{
for (j=0;j<n;j++)
{
cout.width(3);
cout << B[i][j];
}
cout << "\n";
}
return 0;
}

Nse ekzekutohet programi i dhn, pas fshirjes s rreshtit t dyt n


matricn A, matrica q fitohet do t duket kshtu:
Matrica B
7 -3 4 -9 5
-7 6 -4 1 2
9 -5 3 8 -6
Plotsisht njlloj veprohet edhe gjat fshirjes s kolons n matric.
Shembull

a. Bllok-diagrami

Formimi i matrics B(m,n-1) nga antart e matrics


A(m,n), pasi n t t fshihet kolona e k-t.

Fushat numerike 213


Fillimi
i = 1,m

m, n, k, aij,
j
= 1,n

j=1
i=1
Po

j<k

bij=aij

bij=ai,j+1
i=i+1

Po

i m
Jo
j=j+1

Po

Jo

j n-1
Jo
i = 1,m

bij,j= 1,n-1

Fundi

Fig.6.77
b. Programi
// Programi Prg6_77
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=5,k=2;
int A[m][n]={ {7,-3,4,-9,5},
{6,1,-2,4,-8},
{-7,6,-4,1,2},
{9,-5,3,8,-6}
};

214 Algoritmet
int i,j,B[m][n];
for (j=0;j<n-1;j++)
for (i=0;i<m;i++)
if (j<k)
B[i][j]=A[i][j];
else
B[i][j]=A[i][j+1];
cout << "Matrica B"
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<n-1;j++)
{
cout.width(3);
cout << B[i][j];
}
cout << "\n";
}
return 0;
}

Matrica q formohet pas fshirjes s kolons k=2 prmes programit t dhn


m sipr, n ekran do t shtypet kshtu:
Matrica B
7 -3 -9 5
6 1 4 -8
-7 6 1 2
9 -5 8 -6
Nse fshihen njkohsisht rreshti dhe kolona e caktuar n matricn e dhn,
duhet t zhvendosen rreshtat dhe kolonat t cilat gjenden pas atyre q fshihen.
Shembull

a. Bllok-diagrami

Formimi i matrics B(m-1,n-1) nga antart e matrics


A(m,n), pasi n t t fshihet rreshti i l-t dhe kolona e kt.

Fushat numerike 215


Fillimi
i=1,m
m,n,k,l, aij,

=1,n
j

i=1
j=1
Po
Po
bij=aij

j<k

Jo

i<l

Jo

Po

bij=ai,j+1

bij=ai+1,j

j=j+1
Po
j n-1
Jo
i=i+1
Po
i m-1
Jo
b ,i=1,m 1
ij j=1,n1
Fundi

Fig.6.78

b. Programi

j<k

Jo
bij=ai+1,j+1

216 Algoritmet
// Programi Prg6_78
#include <iostream>
using namespace std;

int main()
{ int const m=4,n=5,l=1,k=2;
int A[m][n]={ {7,-3,4,-9,5},
{6,1,-2,4,-8},
{-7,6,-4,1,2},
{9,-5,3,8,-6}
};
int i,j,B[m-1][n-1];
for (i=0;i<n-1;i++)
for (j=0;j<m;j++)
if (i<1)
if (j<k)
B[i][j]=A[i][j];
else
B[i][j]=A[i][j+1];
else
if (j<k)
B[i][j]=A[i+1][j];
else
B[i][j]=A[i+1][j+1];
cout << "Matrica B"
<< "\n";
for (i=0;i<m-1;i++)
{
for (j=0;j<n-1;j++)
{
cout.width(3);
cout << B[i][j];
}
cout << "\n";
}
return 0;
}

Nse ekzekutohet programi i dhn, matrica e cila fitohet pas fshirjes s


rreshtit l=1 dhe k=2 t matrics A, duket kshtu:
Matrica B
7 -3 -9 5
-7 6 1 2
9 -5 8 -6
Algoritmet pr fshirjen e njkohshme t m shum rreshtave, ose t m
shum kolonave n matric, do t jen t ngjashme me ato q u dhan m sipr.

Fushat numerike 217

Detyra

Formimi i matrics B nga antart e matrics A(m,n), pasi


n t t fshihen:
a. x-rreshta, duke filluar prej rreshtit t l-t;
b. y-kolona, duke filluar prej kolons s k-t;
c. x-rreshta dhe y-kolona, duke filluar prej rreshtit t l-t
dhe kolons s k-t.

Ktu, para se t filloj fshirja duhet t kontrollohet se a ka pr fshirje xrreshta dhe y-kolona, prej rreshtit t l-t dhe kolons s k-t.

Fushat tridimensionale
Gjat zgjidhjes s problemeve me kompjuter prdoren edhe fusha
shumdimensionale. Kshtu, p.sh., operimi me t dhna, t cilat prcaktohen
prmes tri madhsive t ndryshme, thjeshtohet dukshm, nse shfrytzohen
fusha tridimensionale.
N algoritme, me fushat tridimensionale operohet duke i shikuar ato si
grumbuj matricash, ku me dimensionin e tret t tyre prcaktohet numri i
matrics n strukturn tridimensionale t fushs, ashtu si shihet n Fig.6.79.

218 Algoritmet
k
j

j=1 2 ... n
i=1 a111 a121 ... a1n1

a111 a121 ... a1n1


A =

a211 a221 ... a2n1

... ... ... ...

a211 a221 ... a2n1

... ... ... ... ...


m

am11 am21 ... amn1

am11 am21 ... amn1


k=1

i
j=1

...

i=1 a112 a122 ... a1n2


2 a212 a222 ... a2n2
... ... ... ... ...
m am12 am22 ... amn2
k=2

j=1

...

i=1 a11l a12l ... a1nl


2
+

...

a21l a22l ... a2nl

... ... ... ... ...


m

am1l am2l ... amnl


k=l

Fig.6.79 Fusha tridimensionale


Shembull

Formimi i fushs tridimensionale C(m,n,2), nga antart e


matricave A(m,n) dhe B(m,n).

Fushat numerike 219

a. Bllok-diagrami
Fillimi

i=1,m
i=1,m
m,n,l, aij,
, bij,j=1,n
=
j
1,
n

k=1
i=1
j=1
Po

Jo

k=1

cijk=aij

cijk=bij

j=j+1
Po

j n
Jo
i=i+1

Po

i m
Jo
k=k+1

Po

kl
Jo

k = 1,l

cijk , i = 1,m

j = 1,n

Fundi

Fig.6.80

220 Algoritmet
b. Programi
// Programi Prg6_80
#include <iostream>
using namespace std;

int main()
{
int const m=4,n=5,l=2;
int A[m][n]={ { 4,-2, 3, 7, 1},
{ 2, 5,-9, 1,-5},
{ 6, 4, 2, 9, 3},
{ 6,-2, 1, 8,-4}
};
int B[m][n]={ { 1, 3,-4,-6, 2},
{ 6, 5,-2, 4,-8},
{-2, 3,-7, 1, 8},
{ 9,-6, 2, 1, 7}
};
int i,j,k,C[m][n][l];
for (k=0;k<l;k++)
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (k==0)
C[i][j][k]=A[i][j];
else
C[i][j][k]=B[i][j];
cout << "
Fusha C"
<< "\n";
for (k=0;k<l;k++)
{
cout << " k="
<< k
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
cout.width(3);
cout << C[i][j][k];
}
cout << "\n";
}
cout << "\n";
}
return 0;

Fushat numerike 221


}

Fusha tridimensionale, e cila formohet prmes programit t dhn, n ekran


do t shtypet kshtu:
Fusha C
k=0
4 -2 3
2 5 -9
6 4 2
6 -2 1

7 1
1 -5
9 3
8 -4

k=1
1 3 -4 -6 2
6 5 -2 4 -8
-2 3 -7 1 8
9 -6 2 1 7
Plotsisht njlloj si edhe gjat puns me matrica, mund t operohet edhe me
antart e fushave tridimensionale.
Shembull

a. Bllok-diagrami

Llogaritja e shums s t katrorve t antarve negativ t


fushs tridimensionale A(m,n,l).

222 Algoritmet

Fillimi

k = 1,l

m,n,l, aijk , i = 1,m

j = 1,n

s=0
k=1
i=1
j=1
aijk < 0
Po
s=s+aijk2
j=j+1
Po

j n
Jo
i=i+1

Po

i m
Jo
k=k+1

Po

kl
Jo
s
Fundi

Fig.6.81
b. Programi

Jo

Fushat numerike 223

// Programi Prg6_81
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int const m=3,n=4,l=2;
int A[m][n][l]={
{{3,5},{-2,4},{5,2},{-7,-1}},
{{-4,9},{6,1},{-2,7},{4,8}},
{{7,3},{6,-5},{8,1},{-2,9}}
};
int i,j,k;
double s;
s=0;
for (k=0;k<l;k++)
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (A[i][j][k]<0)
s=s+A[i][j][k]*A[i][j][k];
cout << "Fusha A"
<< "\n";
for (k=0;k<l;k++)
{
cout << " k="
<< k
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
cout.width(3);
cout << A[i][j][k];
}
cout << "\n";
}
cout << "\n";
}
cout << "Shuma s="
<< s
<< "\n";
return 0;
}

224 Algoritmet
Pas ekzekutimit t programit t dhn, fusha e lexuar A si dhe shuma e
katrorve t antarve negativ t saj n ekran do t shtypen kshtu:
Fusha A
k=0
3 -2 5 -7
-4 6 -2 4
7 6 8 -2
k=1
5 4
9 1
3 -5

2 -1
7 8
1 9

Shuma s=103
Detyra

Pr fushn tridimensionale A(m,n,l), t gjendet shuma:


a. e kubeve t antarve t saj;
b. e antarve t saj, t pjestuar me shumn e indekseve
prkatse;
c. e antarve t diagonales s saj;
d. e antarve me indeks t par tek e indeks t tret ift;
e. e antarve me t tri indekset tek;
f. e antarve pozitiv, por me indeks t tret tek.

Pr gjetjen e antarit t caktuar, edhe te fushat tridimensionale mund t


veprohet plotsisht njlloj si edhe te vektort ose matricat.
Shembull

Gjetja e antarit m t madh pr nga vlera absolute e, n


fushn tredimensionale A(m,n,l).

Fushat numerike 225


a. Bllok-diagrami
Fillimi

k = 1,l

m,n,l, aijk , i = 1,m

j = 1,n

e=|a111|
k=1
i=1
j=1
|aijk| > e
Po
e=|aijk|
j=j+1
Po

j n
Jo
i=i+1

Po

i m
Jo
k=k+1

Po

kl
Jo
e
Fundi

Fig.6.82

Jo

226 Algoritmet
b. Programi
// Programi Prg6_82
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int const m=3,n=4,l=2;
int A[m][n][l]={
{{3,-9},{-2,3},{4,2},{-5,-1}},
{{-4,8},{6,1},{-2,7},{-4,-8}},
{{7,3},{6,-5},{8,1},{-2,1}}
};
int i,j,k,e;
e=abs(A[0][0][0]);
for (k=0;k<l;k++)
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (abs(A[i][j][k])>e)
e=abs(A[i][j][k]);
cout << "Fusha A"
<< "\n";
for (k=0;k<l;k++)
{
cout << " k="
<< k
<< "\n";
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
cout.width(3);
cout << A[i][j][k];
}
cout << "\n";
}
cout << "\n";
}
cout << "Vlera absolute m e madhe e="
<< e
<< "\n";
return 0;
}

Fushat numerike 227

Pr vlerat numerike t antarve t fushs tridimensionale, q sht marr si


shembull n program, rezultati q shtypet n ekran sht:
Fusha A
k=0
3 -2 4 -5
-4 6 -2 -4
7 6 8 -2
k=1
-9 3
8 1
3 -5

2 -1
7 -8
1 1

Vlera absolute m e madhe e=9

Edhe te fushat tridimensionale mund t numrohen antart e caktuar,


plotsisht njlloj si edhe te matricat ose vektort.
Shembull

a. Bllok-diagrami

Numri i antarve pozitiv p brenda fushs tridimensionale


A(m,n,l), por t cilt gjenden mes vlerave 5 dhe 9, duke i
shtypur njkohsisht antart negativ dhe indekset e tyre.

228 Algoritmet
Fillimi

k = 1,l

m,n,l, aijk , i = 1,m

j = 1,n

p=0
k=1
i=1
j=1
Po

aijk < 0
Jo
Po
aijk > 5

k,i,j,aijk

Jo

j=j+1
Po

j n
Jo
i=i+1

Po

i m
Jo
k=k+1

Po

kl
Jo
p
Fundi

Fig.6.83

Po
aijk < 9
Jo

p=p+1

Fushat numerike 229


b. Programi
// Programi Prg6_83
#include <iostream>
using namespace std;
int main()
{
int const m=3,n=4,l=2;
int A[m][n][l]={ {{3,-9},{-2,3},{4,2},{-5,-1}},
{{-4,8},{6,1},{-2,7},{-4,-8}},
{{7,3},{6,-5},{8,1},{-2,1}}};
int i,j,k,p;
p=0;
cout << "
k
i
j
A[i][j][k]"
<<"\n";
for (k=0;k<l;k++)
for (i=0;i<m;i++)
for (j=0;j<n;j++)
if (A[i][j][k]<0)
{
cout << "\t"
<< k
<< "\t"
<< i
<< "\t"
<< j
<< "\t"
<< A[i][j][k]
<< "\t";
}
else
if (A[i][j][k]>5 && A[i][j][k]<9)
p=p+1;
cout << "Numri i krkuar p="
<< p
<< endl;
return 0;
}

Rezultati q shtypet n ekran, pas ekzekutimit t programit t dhn, sht:


k
0
0
0
0
0
0

i
0
0
1
1
1
2

j
1
3
0
2
3
3

A[i][j][k]
-2
-5
-4
-2
-4
-2

230 Algoritmet
1
1
1
1
Numri i krkuar

0
0
1
2
p=6

0
3
3
1

-9
-1
-8
-5

ku n pjesn e par jan shtypur indekset dhe vlerat e antarve negativ t


fushs, kurse p=6 sht numri i antarve pozitiv t fushs t cilt gjenden mes
vlerave 5 dhe 9.
Detyra

N fushn tridimensionale A(m,n,l) t gjendet:


a. numri i antarve pozitiv;
b. numri i antarve m t mdhenj se vlera x, por t
ndryshm nga vlera y;
c. shuma e antarve pozitiv;
d. prodhimi i antarve m t vegjl se vlera x;
e. antari me vler minimale, pr do vler t indeksit t
tret.

232 Algoritmet

N praktik, vlerat numerike t funksioneve t ndryshme llogariten duke


shfrytzuar seri t pafundme. Por, meq realisht nuk mund t shkohet n
pafundsi, llogaritjet ndrpriten duke marr parasysh nj numr t caktuar
antarsh t serive, me ka fitohen vlerat e prafrta t funksioneve.
Shembull

Llogaritja e vlers s prafrt s t shums:

2i
i =1 i

duke marr parasysh vetm antart t cilt jan m t


mdhenj se numri i dhn .
a. Bllok-diagrami
Fillimi

s=0
i=1
1
i

2i

z=

>

Jo

Po
1

2i

Fundi

s=s+z
i,z
i=i+1

Fig.7.1

Vlerat e serive t pafundme 233


Algoritmet e till te t cilt paraprakisht nuk dihet se sa her do t prsritet
nj pjes e caktuar e tyre, quhen edhe algoritme iterative.
b. Programi
// Programi Prg7_1
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
const double e=0.0000001;
float i;
double z,s;
s=0;
i=1;
while ((1/pow(i,2*i)) > e)
{
z=1/pow(i,2*i);
s=s+z;
cout.precision(0);
cout.width(5);
cout <<i;
cout.precision(7);
cout.width(12);
cout.setf(ios::fixed, ios::floatfield);
cout <<z;
cout << "\n";
i=i+1;
}
cout << "Shuma s="
<< s
<<"\n";
return 0;
}

N program, fuqizimi sht llogaritur prmes funksionit pow, te i cili,


argumenti i par e paraqet madhsin q fuqizohet, kurse fuqia shnohet si
argument i dyt.
Rezultati q do t shtypet n ekran, pas ekzekutimit t programit t dhn,
duket kshtu:
1
2
3
4
5

1.0000000
0.0625000
0.0013717
0.0000153
0.0000001

234 Algoritmet
Shuma s=1.0638871
ku n kolonn e dyt jan shtypur antart e seris s pafundme t cilt marrin
pjes n llogaritjen e vlers s shums.
Gjat llogaritjes s vlerave prmes serive t pafundme, llogaritja mund t
ndrpritet n nj numr t caktuar antarsh t seris, i cili zgjidhet lirisht.
Shembull

Llogaritja e vlers s prafrt s t shums:

(1)i

i =1

x
3i 2

duke marr parasysh k-antart e par t seris.


a. Bllok-diagrami
Fillimi
x,k
s=0
i=1
z = ( 1)

3i - 2

s=s+z
i,z
i=i+1
Po

ik
Jo
s
Fundi

Fig.7.2

Vlerat e serive t pafundme 235

b. Programi
// Programi Prg7_2
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int const x=2,k=5;
int i;
double z,s;
s=0;
for (i=1;i<=k;i++)
{
z=pow((-1.),i)*x/(3*i-2);
s=s+z;
cout.width(5);
cout <<i;
cout.precision(7);
cout.width(13);
cout.setf(ios::fixed, ios::floatfield);
cout <<z;
cout << "\n";
}
cout << "Shuma s="
<< s
<< "\n";
return 0;
}

N program, pr llogaritje t fuqizimit sht shfrytzuar funksioni pow,


prmes s cilit (-1) ngritet n fuqin i. Rezultati q fitohet n ekran, pr vlerat
k=5 dhe x=2, do t duket kshtu:
1
-2.0000000
2
0.5000000
3
-0.2857143
4
0.2000000
5
-0.1538462
Shuma s=-1.7395604
Kushti pr ndrprerejen e shtimit t antarve gjat llogaritjeve prmes serive
t pafundme mund t jet edhe ndonj vler e cila llogaritet nga vlera e antarit
q shtohet.

236 Algoritmet

Shembull

Llogaritja e vlers s prafrt s t shums:

i =1

5i4

duke marr parasysh vetm antart, logaritmi natyror i t


cilve sht m i madh se numri i dhn .
a. Bllok-diagrami
Fillimi

s=0
i=1

ln 1 +


>
5i4
Po

z = 1+

5i

s=s+z
i,z
i=i+1

Fig.7.3

Jo

s
Fundi

Vlerat e serive t pafundme 237

b. Programi
// Programi Prg7_3
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
const double e=0.001,pi=3.1415926,x=2;
float i;
double z,s;
s=0;
i=1;
while (log(1+pi/(5*pow(i,4))) > e)
{
z=1+pi/(5*pow(i,4));
s=s+z;
cout.precision(0);
cout.width(5);
cout <<i;
cout.precision(5);
cout.width(10);
cout.setf(ios::fixed, ios::floatfield);
cout <<z;
cout << "\n";
i=i+1;
}
cout << "Shuma s="
<< s
<<"\n";
return 0;
}

Rezultati q shtypet n ekran, nse ekzekutohet programi i dhn, duket


kshtu:
1
1.62832
2
1.03927
3
1.00776
4
1.00245
5
1.00101
Shuma s=5.67881

238 Algoritmet
ku n kolonn e dyt jan shtypur antart e seris, t cilt i shtohen vlerss s
shums.

Serit e pafundme shfrytzohen gjat llogaritjes s vlerave t funksioneve t


ndryshme trigonometrike.
Shembull

Llogaritja e vlers s prafrt s e funksionit sin(x),


prmes seris s pafundme:

(1)i

i =0

x2i + 1
(2i + 1)!

nse gabimi relativ i lejuar sht .

Gabimi relativ llogaritet prmes shprehjes:


r =

Sv Sp
Sv

ku jan:
Sp - shuma parciale paraprake
Sv - shuma parciale vijuese.

Vlerat e serive t pafundme 239

a. Bllok-diagrami

Fillimi
x,
s=0

240 Algoritmet

i=0
Sp=s
F=1

Fig.7.4
b. Programi

j=1

// Programi
Prg7_4
#include
<iostream>
#include
<cmath>
#include
<iomanip>
using namespace
std;
int main()
{
const
double
e=0.0001,x=0.75
;
int i,j;
double
s,Sp,Sv,r,F;
s=0;
i=0;
do
{

F=Fj
j=j+1
Po

F=1;
for
(j=1;j<=2*i+1;j
++)

j(2i+1)
Jo

s = s + (- 1)

2i+1

(2i + 1)!

Sv=s

r=

Sv Sp
Sv
i,r

i=i+1
Po

Sp=s;

F=(2i+1)!

r
Jo
s,sin(x)
Fundi

F=F*j;
s=s+pow((-1.),i)*pow(x,2*i+1)/F;
Sv=s;
r=fabs((Sv-Sp)/Sv);
cout.width(4);
cout <<i;
cout.precision(6);
cout.width(10);
cout.setf(ios::fixed, ios::floatfield);

Vlerat e serive t pafundme 241


cout <<r;
cout << "\n";
i=i+1;
}
while (r>=e);
cout << "Vlera e prafrt s="
<< s
<<"\n"
<< "Vlera e sakt sin="
<< sin(x)
<<"\n";
return 0;
}

242 Algoritmet
Nse ekzekutohet programi, rezultati q shtypet n ekran sht:
0
1
2
3
Vlera
Vlera

1.000000
0.103448
0.002901
0.000039
e prafrt s=0.681639
e sakt sin=0.681639

N pjesn e par t rezultatit jan shtypur vlerat e variabls i dhe gabimi


absolut r pr do i, i cili, si shihet, shkon gjithnj duke u zvogluar. Kurse n
dy rreshtat e fundit, s pari sht shtypur shuma s e vlers s prafrt t sinusit,
dhe pastaj edhe vlera e funksionit sin(x), e llogaritur prmes funksionit sin,
i cili gjendet n kuadr t biblioteks s funksioneve t gjuhs C++. Si shihet,
vlera e llogaritur prmes seris s pafundme dhe ajo e llogaritur duke shfrytzuar
funksionin sin, pr saktsin e krkuar, jan t barabarta.
Vlerat e serive t pafundme mund t llogariten edhe duke e pasur parasysh
gabimin e lejuar relativ.
Shembull

Llogaritja e vlers s prafrt s e seris s pafundme:

i =1

i3

nse gabimi absolut i lejuar sht .


Gabimi absolut llogaritet prmes shprehjes:
a = Sv Sp

ku jan:
Sp - shuma parciale paraprake
Sv - shuma parciale vijuese.

Vlerat e serive t pafundme 243


a. Bllok-diagrami
Fillimi
x,
s=0
i=1
Sp=s
x

s = s+

Sv=s
a=|Sv-Sp|
i,a
i=i+1
Po

a
Jo
s
Fundi

Fig.7.5
b. Programi
// Programi Prg7_5
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
const double x=2,e=0.01;
float i;
double s,Sp,Sv,a;
s=0;
i=1;
do
{

244 Algoritmet
Sp=s;
s=s+x/pow(i,3);
Sv=s;
a=fabs(Sv-Sp);
cout.precision(0);
cout.width(4);
cout <<i;
cout.precision(6);
cout.width(10);
cout.setf(ios::fixed, ios::floatfield);
cout <<a;
cout << "\n";
i=i+1;
}
while (a>=e);
cout << "Vlera e llogaritur s="
<< s
<<"\n";
return 0;
}

Rezultati q fitohet n ekran pas ekzekutimit t programit t dhn sht:


1
2
3
4
5
6
Vlera

2.000000
0.250000
0.074074
0.031250
0.016000
0.009259
e llogaritur s=2.380583

N kolonn e dyt t rezultateve t dhna m sipr jan shtypur vlerat e


gabimit absolut a n iteracionet e veanta, prkatsisht pr do vler t variabls
i.
Detyr

T llogaritet vlera e prafrt z e funksionit ex, prmes seris


s pafundme:

i =1

i3

nse gabimi relativ i lejuar sht .

246 Algoritmet

Gjat llogaritjeve t ndryshme, kur kemi t bjm me vlera komplekse,


operohet ve me pjesn reale dhe ve me at imagjinare.
Shembull

s =
=
=

Llogaritja e shums s antarve kompleks t vektorit


Z(n), nse antart e pjess reale dhe t pjess imagjinare
jan dhn prmes vektorve X(n) dhe Y(n).

zi

i =1
n

(xi

+ jyi)

xi

+ j yi

i =1
n
i =1

i =1

= a + jb

Numrat kompleks 247


a. Bllok-diagrami
Fillimi
n,(xi,i=1,n),(yi,i=1,n)
a=0
b=0
i=1
a=a+xi
b=b+yi
i,xi,yi
i=i+1
Po

in
Jo
a,b
Fundi

Fig.8.1
b. Programi
// Programi Prg8_1
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int const n=5;
int a,b,i;
int X[n]={3,7,4,2,-8};
int Y[n]={6,-9,5,8,1};
a=0;
b=0;
cout << "
i
X
Y"

248 Algoritmet
<< "\n";
cout << "-------------"
<< "\n";
for (i=0;i<n;i++)
{
a=a+X[i];
b=b+Y[i];
cout << setw(4) << i
<< setw(4) << setiosflags(ios::right)<<X[i]
<< setw(4) << setiosflags(ios::right)<<Y[i]
<< "\n";
}
cout << "Shuma reale .... a="
<< a
<< "\n"
<< "Shuma imagjinare b="
<< b
<< "\n";
return 0;
}

Pr vlerat e vektorit kompleks Z(n), prkatsisht komponentes reale X(n)


dhe komponentes imagjinare Y(n), t cilat jan marr si shembull, pas
ekzekutimit t programit n ekran do t shtypen kto rezultate:
i
X
Y
------------1
3
6
2
7 -9
3
4
5
4
2
8
5 -8
1
Shuma reale .... a=8
Shuma imagjinare b=11

Pr llogaritjen e prodhimit t antarve t nj vektori kompleks duhet


shfrytzuar formn eksponenciale t shprehjes s antarve prkats t vektorit.

Numrat kompleks 249

Shembull

P=
=

Llogaritja e prodhimit t antarve kompleks t vektorit


Z(n), nse antart e pjess reale dhe t pjess imagjinare
jan dhn prmes vektorve X(n) dhe Y(n).

(xi + jy i)

i=1
n

i eji

i=1

)(

= 1 ej1 2 ej2 ... n ejn


=

i e i=1

= ej

i=1

= cos + j sin
= a + jb

ku jan:
=
=

i =1
n
i
i=1

a = cos ,
b = sin
i =

xi2 + yi2

y
i = arctg i
xi

250 Algoritmet

a. Bllok-diagrami
Fillimi
n,(xi,i=1,n),(yi,i=1,n)
=1
=0
i=1

i = x i2 + y i2
y
i = arctg i
xi
= i
= i
i,xi,yi
i=i+1
Po

i n
Jo
a=cos
b=sin
a,b
Fundi

Fig.8.2

Numrat kompleks 251

b. Programi
// Programi Prg8_2
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
int const n=5;
int i;
double X[n]={3,7,4,2,-8};
double Y[n]={6,-9,5,8,1};
double a,b,Alfa,Beta,Ro[n],Fi[n];
Alfa=1;
Beta=0;
cout << "
i
X
Y"
<< "\n";
cout << "-------------"
<< "\n";
for (i=0;i<n;i++)
{
Ro[i]=sqrt(pow(X[i],2)+pow(Y[i],2));
Fi[i]=atan(Y[i]/X[i]);
Alfa=Alfa*Ro[i];
Beta=Beta+Fi[i];
cout << setw(4) << i
<< setw(4) << setiosflags(ios::right)<< X[i]
<< setw(4) << setiosflags(ios::right)<< Y[i]
<< "\n";
}
a=Alfa*cos(Beta);
b=Alfa*sin(Beta);
cout << "Pjesa reale .... a="
<< a
<< "\n"
<< "Pjesa imagjinare b="
<< b
<< "\n";
return 0;
}

Nse ekzekutohet programi i dhn, rezultati q shtypet n ekran do t duket


si n vijim.

252 Algoritmet

i
X
Y
------------0
3
6
1
7 -9
2
4
5
3
2
8
4 -8
1
Pjesa reale .... a=-21570
Pjesa imagjinare b=24390

Pr llogaritjen e shums ose t prodhimit t funksioneve trigonometrike, ose


edhe t funksioneve t tjera, duhet gjetur rrug q shprehjet t zbrthehen n
pjesn reale dhe n pjesn imagjinare t tyre.
Shembull

Llogaritja e shums:
s=

sin zi

i =1

ku zi jan antart kompleks t vektorit Z(n), kurse


antart e pjess reale dhe t pjess imagjinare t tij jan
dhn prmes vektorve X(n) dhe Y(n).
n

sin zi

s=
=

i=1
n

sin(xi + jyi)

i=1

ej(xi +jyi) e j(xi +jyi)


2j
i=1
n

n eyi e yi
eyi + e yi
sin xi + j
cos xi
2
2
i=1
i=1
= a + jb
n

ku jan:
eyi + e yi
sin xi
2
i=1
n

a=

eyi e yi
cos xi
2
i=1
n

b=

Numrat kompleks 253

a. Bllok-diagrami
Fillimi
n,(xi,i=1,n),(yi,i=1,n)
a=0
b=0
i=1

a =a+

yi

+e

yi

sin x i

2
b = b+

yi

yi

i,xi,yi
i=i+1
Po

in
Jo
a,b
Fundi

Fig.8.3
b. Programi
// Programi Prg8_3
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
int const n=5;
int i;
double X[n]={3,7,4,2,-8};
double Y[n]={6,-9,5,8,1};

cos x i

254 Algoritmet
double a=0,b=0;
cout << "
i
X
Y"
<< "\n";
cout << "-------------"
<< "\n";
for (i=0;i<n;i++)
{
a=a+(exp(Y[i])+exp(-Y[i]))/2*sin(X[i]);
b=b+(exp(Y[i])-exp(-Y[i]))/2*cos(X[i]);
cout << setw(4) << i
<< setw(4) << setiosflags(ios::right)<<X[i]
<< setw(4) << setiosflags(ios::right)<<Y[i]
<< "\n";
}
cout << "Pjesa reale .... a="
<< a
<< "\n"
<< "Pjesa imagjinare b="
<< b
<< "\n";
return 0;
}

Nse ekzekutohet programi i dhn, rezultati q shtypet n ekran sht:


i
X
Y
------------1
3
6
2
7 -9
3
4
5
4
2
8
5 -8
1
Pjesa reale .... a=3987.87
Pjesa imagjinare b=-3923.09

Detyra

Nse antart e vektorit Z(n) jan numra kompleks dhe


pjest reale dhe imagjinare t tyre jepen prmes vektorve
X(n) dhe Y(n), t llogariten vlerat:
p=

coszi

i=1

s=

ln zi

i=1

Numrat kompleks 255

256 Algoritmet

Me tabelimin e vlerave numerike t funksioneve nnkuptohet llogaritja e


vlerave t tyre, pr vlera t ndryshme t variablave q paraqiten brenda
shprehjeve prkatse.
Shembull

Llogaritja e vlerave t funksionit:


e2x + 1

y = n
2
x

+
2
i

i = 1

pr x 3
pr x > 3

pr vlera t ndryshme t variabls x mes a dhe b, duke


ndryshuar at me hapin h.

Tabelimi i funksioneve 257


a. Bllok-diagrami
Fillimi
n,a,b,h
x=a
Po

Jo

x3

s=0
i=1

s = s + + 2i
2

i=i+1
Po

i n
Jo

y=e

2x+1

y=s
x,y
x=x+h
Po

xb
Jo
Fundi

Fig.9.1

258 Algoritmet
b. Programi
// Programi Prg9_1
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
const double a=2,b=5,h=0.5;
int n=3,i;
double x,y,s;
cout << "Tabela e vlerave"
<< "\n";
cout << "
x
y"
<< "\n";
x=a;
do
{
if (x<=3)
y=exp(2*x+1);
else
{
s=0;
for (i=1;i<=n;i++)
s=s+pow(x/2+2*i,2);
y=s;
}
cout.setf(ios::fixed);
cout.precision(2);
cout.width(6);
cout << x;
cout.precision(4);
cout.width(12);
cout << y
<< "\n";
x=x+h;
}
while (x<=b);
return 0;
}

Rezultati q shtypet n ekran do t duket:


Tabela e vlerave
x
y
2.00 148.4132
2.50 403.4288

Tabelimi i funksioneve 259


3.00 1096.6332
3.50 107.1875
4.00 116.0000
4.50 125.1875
5.00 134.7500
Tabela mund t'i prmbaj vlerat numerike t disa funksionve njkohsisht.
Shembull

Llogaritja e vlerave numerike t funksioneve:


y = 3x2 + 2x 1
1
z =
2 x
v = 3 ln(x 1)
t = ex + 2 sin x

pr vlera t ndryshme t variabls x mes a dhe b, duke


ndryshuar vlern e saj me hapin h.
Meq pr t gjitha vlerat e variabls x mund t llogariten vetm funksionet
y dhe t, shprehjet e tyre jan vendosur menjher n fillim t bllok-diagramit.
Pr funksionet e tjera, para se t llogariten vlerat e tyre, duhet kontrolluar vlern
e variabls x, sepse funksioni v nuk mund t llogaritet, nse x1, kurse vlera e
funksionit z sht e padefinuar pr x=2, gj q shihet edhe n paraqitjen
vijuese:
y
z
v
t
x
-3

-2

-1

260 Algoritmet
a. Bllok-diagrami
Fillimi
a,b,h
x=a
y=3x2+2x-1
t=ex+2sin x
Po

x1
Jo
v=3 ln(x-1)
Po

x=2
Jo
z=

1
2 x

x,y,z,v,t
x=x+h
Po

z=

xb
Jo
Fundi

Fig.9.2

x,y,v,t

1
2 x

x,y,z,t

Tabelimi i funksioneve 261


b. Programi
// Programi Prg9_1
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
const double a=-3,b=3,h=0.5;
double x,y,z,v,t;
cout << " x
y
z
v
t"
<< "\n"
<< "----------------------------------"
<< "\n";
x=a;
cout.setf(ios::fixed);
cout.precision(2);
do
{
y=3*pow(x,2)+2*x-1;
t=exp(x)+2*sin(x);
if (x<=1)
{
z=1/(2-x);
cout << setw(5)
<< x
<< setw(8)
<< y
<< setw(6)
<< z
<< " Mungon"
<< setw(7)
<< t
<< "\n";
}
else
{
v=3*log(x-1);
if (x==2)
{
cout << setw(5)
<< x
<< setw(8)
<< y
<< " ----"
<< setw(8)
<< v
<< setw(7)

262 Algoritmet
<< t
<< "\n";
}
else
{
z=1/(2-x);
cout << setw(5)
<< x
<< setw(8)
<< y
<< setw(6)
<< z
<< setw(8)
<< v
<< setw(7)
<< t
<< "\n";
}
}
x=x+0.5;
}
while (x<=b);
return 0;
}

Tabela e vlerave numerike, e cila fitohet n ekran pas ekzekutimit t


programit t dhn, do t duket kshtu:
x
y
z
v
t
----------------------------------3.00
20.00 0.20 Mungon -0.23
-2.50
12.75 0.22 Mungon -1.11
-2.00
7.00 0.25 Mungon -1.68
-1.50
2.75 0.29 Mungon -1.77
-1.00
0.00 0.33 Mungon -1.32
-0.50
-1.25 0.40 Mungon -0.35
0.00
-1.00 0.50 Mungon
1.00
0.50
0.75 0.67 Mungon
2.61
1.00
4.00 1.00 Mungon
4.40
1.50
8.75 2.00
-2.08
6.48
2.00
15.00 ---0.00
9.21
2.50
22.75 -2.00
1.22 13.38
3.00
32.00 -1.00
2.08 20.37

264 Algoritmet

N praktik, prve mesatares aritmetikore, prdoret edhe mesatarja gjeometrike,


si dhe mesatarja harmonike.
Shembull

Llogaritja e mesatares aritmetikore, mesatares gjeometrike


dhe e mesatares harmonike, pr antart e vektorit X(n).

Pr llogaritjen e mesatareve n fjal, prdoren shprehjet:

Mesatarja aritmetikore
a =

1 n
xi
n i =1

Mesatarja gjeometrike
g = n

xi

i =1

Mesatarja harmonike
h =

n
n

i =1 i

Mesataret dhe devijimet 265


a. Bllok-diagrami
Fillimi
n,(xi,i=1,n)
s1=0
p=1
s2=0
i=1
s1=s1+xi
p=pxi
s =s +
2

1
x

i=i+1
Po

in
Jo
s
a= 1
n
g=

h=

n
s
2

a,g,h
Fundi

Fig.10.1

266 Algoritmet
b. Programi
// Programi Prg10_1
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
const int n=5;
int X[n]={7,4,2,8,5},i;
double s1=0,p=1,s2=0,a,g,h;
for (i=0;i<n;i++)
{
s1=s1+X[i];
p=p*X[i];
s2=s2+1./X[i];
}
a=s1/n;
cout << "Mesatarja aritmetikore a="
<< a;
g=pow(p,1./n);
cout << "\nMesatarja gjeometrike g="
<< g;
h=n/s2;
cout << "\nMesatarja harmonike
h="
<< h
<< "\n";
return 0;
}

Pr vlerat e antarve t vektorit q sht marra si shembull n program, pas


ekzekutimit t programit, si rezultat n ekran do t shtypet:
Mesatarja aritmetikore a=5.2
Mesatarja gjeometrike g=4.67789
Mesatarja harmonike
h=4.10557
Duke shfrytzuar vlerat e llogaritura t mesatareve, prmes shprehjeve
vijuese mund t gjenden edhe devijimet standarde prkatse:

Devijimi aritmetikor
=

1 n
(xi a)2
n i =1

Mesataret dhe devijimet 267

Devijimi gjeometrik
=

1 n
(xi g)2
n i =1

Devijmi absolut
=

1 n
xi a
n i =1

Shembull

Llogaritja e devijimit standard aritmetikor, gjeometrik dhe


harmonik, pr antart e vektorit X(n).

a. Bllok-diagrami
Fillimi
n,(xi,i=1,n)
s1=0
p=1
s2=0
i=1
s1=s1+xi
p=pxi

s =s +
2

1
x

i=i+1
Po

in
Jo
A

268 Algoritmet

a = s1 / n

g=np

h = n/s2
a,g,h
s3=0
s4=0
s5=0
i=1
s3=s3+(xi-a)2
s4=s4+(xi-g)2
s5=s5+|xi-a|
i=i+1
Po

in
Jo

= s3 / n
= s4 / n

= s5 / n
,,
Fundi

Fig.10.2

Mesataret dhe devijimet 269

b. Programi
// Programi Prg10_2
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
const int n=5;
int X[n]={7,4,2,8,5},i;
double s1=0,p=1,s2=0,a,g,h;
double s3=0,s4=0,s5=0,Sigma,Ro,Delta;
for (i=0;i<n;i++)
{
s1=s1+X[i];
p=p*X[i];
s2=s2+1./X[i];
}
a=s1/n;
cout << "Mesatarja aritmetikore a="
<< a;
g=pow(p,1./n);
cout << "\nMesatarja gjeometrike g="
<< g;
h=n/s2;
cout << "\nMesatarja harmonike
h="
<< h;
for (i=0;i<n;i++)
{
s3=s3+pow(X[i]-a,2);
s4=s4+pow(X[i]-g,2);
s5=s5+fabs(X[i]-a);
}
Sigma=sqrt(s3/n);
cout << "\nDevijimi aritmetikor Sigma="
<< Sigma;
Ro=sqrt(s4/n);
cout << "\nDevijimi gjeometrik
Ro="
<< Ro;
Delta=s5/n;
cout << "\nDevijimi absolut
Delta="
<< Delta
<< "\n";
return 0;
}

270 Algoritmet

Pas ekzekutimit t programit t dhn, rezultatet n ekran do t shtypen


kshtu:
Mesatarja aritmetikore a=5.2
Mesatarja gjeometrike g=4.67789
Mesatarja harmonike
h=4.10557
Devijimi aritmetikor Sigma=2.13542
Devijimi gjeometrik
Ro=2.19832
Devijimi absolut
Delta=1.84

Integralet e njfishta 272


Integralet e dyfishta 277

272 Algoritmet

Pr llogaritjen e vlers s integralit t caktuar, prdoret Metoda e Trapezit, ose


Metoda e Simpsonit.

Integralet e njfishta
Vlera e integralit t njfisht:
b

f(x)dx

sipas Metods s Trapezit llogaritet me shprehjen:


f(a) + f(b)
T = h
+
2

ku
h =

n 1

f(a

i =1

+ i h)

b a
n

sht hapi i integrimit, nse zona e integrimit ndahet n n-pjes.


Shembull

Llogaritja e vlers s integralit:


4

(x

+ 1)dx

me metodn numerike t Trapezit.

Integrimi numerik 273


a. Bllok-diagrami
Fillimi
f(x)=x2+1
n,a,b
h=

b-a
n

s=0
i=1
s=s+f(a+ih)
i=i+1
Po

T = h

i n-1
Jo

f(a)+ f(b) + s

2
T
Fundi

Fig.11.1
b. Programi
// Programi Prg11_1
#include <iostream>
using namespace std;
double f(double x);
int main()
{
const int n=10;
const double a=1,b=4;
int i;
double T,s,h;
h=(b-a)/n;
s=0;
for (i=1;i<=n-1;i++)

274 Algoritmet
s=s+f(a+i*h);
T=h*((f(a)+f(b))/2+s);
cout << "Vlera e integralit T="
<< T
<< "\n";
return 0;
}
// Nnprogrami
double f(double x)
{
return x*x+1;
}

Pas ekzekutimit t programit t dhn, rezultati q shtypet n ekran sht:


Vlera e integralit T=24.045
Vlera e integralit llogaritet edhe prmes Metods s Simpsonit, duke shfrytzuar
shprehjen:
S =

n
n 1

h
f(a) + f(b) + 4 f[a + (2i 1)h] + 2 f[a + 2ih]
3

i =1
i =1

ku hapi i integrimit llogaritet kshtu:


h =

b a
2n

nse zona e integrimit ndahet n n-pjes.


Shembull

Llogaritja e vlers s integralit:


4

(x

+ 1)dx

me metodn numerike t Simpsonit.

Integrimi numerik 275

a. Bllok-diagrami
Fillimi
f(x)=x2+1
n,a,b
h=

b-a
2n

s1=0
s2=0
i=1
s1=s1+f[a+(2i-1)h]
s2=s2+f(a+2ih)
i=i+1
Po

i n-1
Jo
s1=s1+f[a+(2n-1)h]

S=

h
f(a)+ f(b)+ 4 s + 2 s
1
2
3

S
Fundi

Fig.11.2

276 Algoritmet

b. Programi
// Programi Prg11_2
#include <iostream>
using namespace std;
double f(double x);
int main()
{
const int n=10;
const double a=1,b=4;
int i;
double S,s1,s2,h;
h=(b-a)/(2*n);
s1=0;
s2=0;
for (i=1;i<=n-1;i++)
{
s1=s1+f(a+(2*i-1)*h);
s2=s2+f(a+2*i*h);
}
s1=s1+f(a+(2*n-1)*h);
S=h/3*(f(a)+f(b)+4*s1+2*s2);
cout << "Vlera e integralit S="
<< S
<< "\n";
return 0;
}
// Nnprogrami
double f(double x)
{
return x*x+1;
}

Pas ekzekutimit t programit t dhn, rezulati n ekran do t shtypet kshtu:


Vlera e integralit S=24

Integrimi numerik 277

Integralet e dyfishta
Pr llogaritjen e vlers s integralit t dyfisht:
bd

f(x, y)dx dy

ac

sipas Metods s Trapezit, shfrytzohet shprehja:


1
T = h g [f(a,c)+ f(a,d)+ f(b,c)+ f(b,d)]
4
+

m 1

1 n 1
f(xi,c)+ f(xi,d)+ f(a,y j)+ f(b,y j)
2 i=1
j=1

m-1 n-1

+ f(xi,y j)

j=1 i=1

ku jan:
xi = a + ih
yj = c + jd
b a
n
d c
g =
m
h =

Shembull

Llogaritja e vlers s integralit t dyfisht:


24

1 3 (x

1
+ y )2

dx dy

me metodn numerike t Trapezit.

278 Algoritmet
a. Bllok-diagrami

Fillimi

f(x,y) =

(x + y )2

m,n,a,b,c,d

h=

b-a
n

g=

d-c
m

r=

1
f(a,c)+ f(a,d)+ f(b,c)+ f(b,d)
4
s1=0
i=1
xi=a+ih
s1=s1+f(xi,c)+f(xi,d)
i=i+1
Po

i n-1
Jo
A

Integrimi numerik 279

s2=0
j=1
yj=c+jg
s2=s2+f(a,yj)+f(b,y1)
j=j+1
Po

j m-1
Jo
s3=0
i=1
j=1
yj=c+jg
s3=s3+f(xi,yi)
j=j+1

Po

j m-1
Jo
i=i+1

Po

i n-1
Jo

T = h g r +

1
2

[s

T
Fundi

Fig.11.3

+s

] + s3

280 Algoritmet
b. Programi
// Programi Prg11_3
#include <iostream>
#include <cmath>
using namespace std;
double f(double x,double y);
int main()
{
const int m=6,n=4;
const double a=1,b=2,c=3,d=4;
int i,j;
double T,s1,s2,s3,r,h,g,xi,yj;
h=(b-a)/n;
g=(d-c)/m;
r=(f(a,c)+f(a,d)+f(b,c)+f(b,d))/4;
s1=0;
for (i=1;i<=n-1;i++)
{
xi=a+i*h;
s1=s1+f(xi,c)+f(xi,d);
}
s2=0;
for (j=1;j<=m-1;j++)
{
yj=c+j*g;
s2=s2+f(a,yj)+f(b,yj);
}
s3=0;
for (i=1;i<=n-1;i++)
{
xi=a+i*h;
for (j=1;j<=m-1;j++)
{
yj=c+j*g;
s3=s3+f(xi,yj);
}
}
T=h*g*(r+(s1+s2)/2+s3);
cout << "Vlera e integralit T="
<< T
<< "\n";
return 0;
}

Integrimi numerik 281

// Nnprogrami
double f(double x,double y)
{
return 1/pow(x+y,2);
}

Rezultati q do t shtypet n ekran, nse ekzekutohet programi i dhn,


sht:
Vlera e integralit T=0.0408994

Metoda Runge-Kutta 284


Metoda Kutta-Merson 287

284 Algoritmet

Pr zgjidhjen e ekuacioneve diferenciale lineare prdoren metoda t


ndryshme numerike. Ktu do t jepen metodat Runge-Kutta dhe Kutta-Merson.

Metoda Runge-Kutta
Sipas metods Runge-Kutta t rendit t katrt, pr pikn (xi,yi), fillimisht
llogariten vlerat e koeficientve:
r1 = f(xi, yi ) h
h
r

r2 = f xi + , yi + 1 h
2
2

h
r

r3 = f xi + , yi + 2 h
2
2

r4 = f(xi + h, yi + r3 ) h

prmes s cilve pastaj gjendet pika vijuese (xi+1,yi+1), kshtu:


xi + 1 = xi + h
1
yi + 1 = yi + {r1 + 2r2 + 2r3 + r4}
6

ku hapi i diferencimit llogaritet me shprehjen:


h =

x p x0
n

nse kushtet fillestare merren (x0,y0) dhe zona e diferencimit [x0,xp]


ndahet n n-pjes.
Shembull

Zgjidhja e ekuacionit diferencial:


dy
= x2 + y
dx

prmes metods Runge-Kutta, pr kushtet fillestare x0=1 dhe


y0=1.

Diferencimi numerik 285


a. Bllok-diagrami
Fillimi
f(x,y)=x2+y
n,x0,y0,xp
x -x
p

h=

x=x0
y=y0
i=1
r1=f(x,y)h

r = f x +
2

r = f x +
3

,y +

r1
2

,y +

r2
2

r4=f(x+h,y+r3)h
y=y+

1
r + 2r + 2r + r
2
3
4
6 1

x=x+h
i,x,y
i=i+1
Po

in
Jo
Fundi

Fig.12.1

286 Algoritmet
b. Programi
// Programi Prg12_1
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double f(double x,double y);
int main()
{
const int n=10;
const double x0=1,y0=1,xp=2;
int i;
double x,y,h,r1,r2,r3,r4;
h=(xp-x0)/n;
x=x0;y=y0;
cout << "
i
x
y"
<< "\n------------------------"
<< "\n";
cout.setf(ios::fixed);
for (i=1;i<=n;i++)
{
r1=f(x,y)*h;
r2=f(x+h/2,y+r1/2)*h;
r3=f(x+h/2,y+r2/2)*h;
r4=f(x+h,y+r3)*h;
y=y+(r1+2*r2+2*r3+r4)/6;
x=x+h;
cout.width(4);
cout << i;
cout.precision(2);
cout.width(8);
cout << x;
cout.precision(5);
cout.width(11);
cout << y
<< "\n";
}
return 0;
}
// Nnprogrami
double f(double x,double y)
{
return pow(x,2)+y;
}

Diferencimi numerik 287


Pas ekzekutimit t programit, rezultatet q shtypen n ekran duken:
i
x
y
-----------------------1
1.10
1.22103
2
1.20
1.48842
3
1.30
1.80915
4
1.40
2.19095
5
1.50
2.64233
6
1.60
3.17271
7
1.70
3.79251
8
1.80
4.51324
9
1.90
5.34761
10
2.00
6.30968

Metoda Kutta-Merson
Gjat zgjidhjes s ekuacioneve diferenciale sipas metods Kutta-Merson,
vlera e piks vijuese t funksionit yi+1 caktohet duke shfrytzuar vlern e piks
paraprake yi:
yi + 1 = yi +

1
(k1 + 4k4 + k5 )
6

ku koeficientt e veant llogariten prmes shprehjeve:


k1 = f(xi, yi ) h

h
k

k2 = f xi + , yi + 1 h
3
3

h
k + k2

k3 = f xi + , yi + 1
h
3
6

h
k1
3

k4 = f xi + , yi +
+ k3 h
2
8
8

k
3

k5 = f xi + h , yi + 1 k3 + 2k4 h
2
2

Nse kushtet fillestare merren (x0,y0) dhe zona e diferencimit [x0,xp]


ndahet n n-pjes, hapi prkats i diferencimit sht:
h =

x p x0
n

Shembull

Zgjidhja e ekuacionit diferencial:


dy 1
= xy
dx 2

prmes metods Kutta-Merson, pr kushtet fillestare x0=1 e


y0=1, si dhe xp=1 e n=10.

288 Algoritmet
a. Bllok-diagrami
Fillimi

f(x,y)= (x y)/2
n,x0,y0,xp

h = (x p - x 0)/2
x=x0
y=y0
i=1
k1=f(x,y)h

k = f x +
2

k = f x +
3

k = f x +
4

h
3

,y +

k1

,y +

( k1 + k 2 )
h
6

k
3

,y + 1 + k h
3
2
8 8

k
3

k5 = f x + h,y + 1 k3 + 2 k4 h
2
2

y = y +(k1 + 4k4 + k5)/6


x=x+h
i,x,y
i=i+1
Po

in
Jo
Fundi

Fig.12.2

Diferencimi numerik 289


b. Programi
// Programi Prg12_2
#include <iostream>
#include <iomanip>
using namespace std;
double f(double x,double y);
int main()
{
const int n=10;
const double x0=0,y0=1,xp=1;
int i; double x,y,h,k1,k2,k3,k4,k5;
h=(xp-x0)/n; x=x0;y=y0;
cout << "
i
x
y"
<< "\n------------------------" << "\n";
cout.setf(ios::fixed);
for (i=1;i<=n;i++)
{
k1=f(x,y)*h;
k2=f(x+h/3,y+k1/3)*h;
k3=f(x+h/3,y+(k1+k2)/6)*h;
k4=f(x+h/2,y+k1/8+(3*k3)/8)*h;
k5=f(x+h,y+k1/2-(3*k3)/2+2*k4)*h;
y=y+(k1+4*k4+k5)/6;
x=x+h;
cout.width(4); cout << i;
cout.precision(2); cout.width(8);
cout << x;
cout.precision(5); cout.width(11);
cout << y << "\n";
}
return 0;
}
// Nnprogrami
double f(double x,double y)
{
return (x*y)/2;
}

Pas ekzekutimit t programit, vlerat numerike t cilat fitohen si zgjidhje e


ekuacionit diferencial, n ekran do t shtypen kshtu:
i
x
y
-----------------------1
0.10
1.00250
2
0.20
1.01005
3
0.30
1.02276
4
0.40
1.04081
5
0.50
1.06449
6
0.60
1.09417
7
0.70
1.13032
8
0.80
1.17351
9
0.90
1.22446

290 Algoritmet
10

1.00

1.28403

Agni H. Dika

Fakulteti i Inxhinieris Elektrike dhe Kompjuterike


Prishtin

ALGORITMET
njohuri themelore

me programe n gjuhn C++

Lektor
Dr. Ilaz Metaj

Kopertina
AfiDesign

Shtypi
Adea
Prishtin

Copyright 2007

You might also like