strukture te dhenash seminar 1 -...

30
Strukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti i Shkencave te Natyres Departamenti i Matematikes dhe Informatikes SHKODER 1 MSc. Elisa Reci Semestri II/2013

Upload: others

Post on 03-Oct-2020

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Strukture te Dhenash

Seminar 8

ELISA RECI Universiteti Luigj Gurakuqi

Fakulteti i Shkencave te Natyres

Departamenti i Matematikes dhe Informatikes

SHKODER

1 MSc. Elisa Reci Semestri II/2013

Page 2: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Skedaret

• Skedari eshte nje varg regjistrimesh te te njejtit tip te cilet jane te vendosur ne disk, shirita etj.

• Nga ana tjeter nje regjistrim eshte nje bashkesi te dhenash qe programi i trajton si nje te tere.

• Cdo skedar ka nje emer, qe i lejon sistemit te operimet ta vecoje ate nga skedaret e tjere.

MSc. Elisa Reci 2 Semestri II/2013

Page 3: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Skedaret

• Skedaret jane dy llojesh:

– Skedare te vijueshem (ose skedare text)

– Skedare me hyrje te drejtperdrejte (ose skedare binare)

MSc. Elisa Reci 3 Semestri II/2013

Page 4: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Skedaret me hyrje te drejtperdrejte

• Skedaret me hyrje te drejtperdrejte quhen ndryshe edhe si skedaret binare

• Operacionet e leximit dhe te shkrimit mund te kryhen sebashku, gje qe nuk ishte e mundur nga skedaret e vijueshem.

• Te dhenat qe vendosen ne skedaret me hyrje te drejtperdrejte duhet te jene te strukturuara (struct)

MSc. Elisa Reci 4 Semestri II/2013

Page 5: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Strukturat

• Struct-bashkesi elementesh te tipeve te ndyshme.

• Kombinimi i tipeve eshte i fiksuar dhe i pandryshueshem.

• Hapsira e rezervimit eshte e njohur qe me pare.

• Koha e hyrjes se cdo anetari te struktures eshte e njejte.

• Kjo realizohet duke shoqeruar strukturen me nje tabele qe permban fillimin e vendndodhjes se cdo anetari te struktures.

MSc. Elisa Reci 5 Semestri II/2013

Page 6: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Strukturat

• Prsh:

• Nje strukture mund te perbehet nga 2 nr te plote, 3 tabela me 20 nr te plote sejcila, 4 nr te plote te tjere, dhe 2 emra qe permbajne nga 12 karaktere .

• Kjo strukture permban 11 anetare(fusha).

• Struktura eshte:

MSc. Elisa Reci 6 Semestri II/2013

Page 7: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

• Typedef struct {

int n1, n2;

int t1[20], t2[20] , t3[20];

int n3, n4, n5, n6 ;

char e1[12] , e2[12];

} str1 ;

MSc. Elisa Reci 7 Semestri II/2013

Page 8: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Skedaret binare

• Keto nuk mund te kriojen me ane te nje editori

• Por me ane te nje programi qe lexon te dhenat nga tastiera ose me ane te nje skedari tekst te krijuar me pare.

MSc. Elisa Reci 8 Semestri II/2013

Page 9: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Skedaret binare

• Per te trajtuar nje rregjistrim te caktuar ne skedaret binare duhet te vendoset shenjuesi tek struktura e duhur e pastaj te aktivizohet nje strukture shkrimi apo leximi

• Keto mund te perdoren si per hyrje te vijueshme ashtu edhe per te drejtperdrejte.

• Kurse skedaret tekst nuk mund te perdoren si skedare me hyrje te drejtperdrejte.

MSc. Elisa Reci 9 Semestri II/2013

Page 10: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Skedaret binare

• Cdo rregjistrim eshte i paisur me nje nr regjistrimi (ID)

• => hyrje te drejteperdrejt ne regjistrim dhe jo nga fillimi

• => nenkupton qe ky nr duhet njohur qe me pare

• Kerkim i shpejte

MSc. Elisa Reci 10 Semestri II/2013

Page 11: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Lexim/shkrim-s.binare

• Perpara se te perdoret nje skedar binar ai duhet hapur.

• Hapja behet njelloj si per tekst vetem se “t” (tekst) e zevendesojme me “b” (binar)

• prsh fopen (“emerskedari.mbarese”, “wb”);

MSc. Elisa Reci 11 Semestri II/2013

Page 12: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Lexim/shkrim-s.binare

• Binari dallon nga tekst pasi perdore struct

• => madhesia ne byte eshte e njohur dhe mund te perdoret funksioni sizeof

• Shkrimi behet me ane te fwrite

• prsh

fwrite (&p, sizeof(pike), 1,f)

MSc. Elisa Reci 12 Semestri II/2013

Page 13: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Lexim/shkrim-s.binare

• Kjo nenkupton:

• Shkrimin e struktures p qe i perket tipit pike

• Numri 1 tregon qe shkruhet nje element

• F tregon skedarin ku do behet shkrimi

• Ne menyre te ngjashme ndodh edhe leximi:

• Prsh

fread(&p, sizeof(pike), 1,f) MSc. Elisa Reci 13 Semestri II/2013

Page 14: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Ushtrimi 1

• Ndertoni nje program qe shkruan ne nje skedare binar 10 elemente te nje strukture pike dhe me pas lexon dhe afishon ne ekran elementet e ketij skedari

MSc. Elisa Reci 14 Semestri II/2013

Page 15: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Zgjidhje 1

#include <cstdlib>

#include <iostream>

#include <cstdio>

using namespace std;

typedef struct {

int x,y;

}pike;

int main(){

int i ; FILE *f ; pike p;

//krijohet skedari prej 10 anetaresh

f = fopen("pikat.dat" , "wb");

for (i=0; i<10 ; i++){

p.x =i;

p.y = i * i;

fwrite (&p, sizeof(pike),1,f);

}

fclose(f);

//lexohen 10 strukturat

f=fopen ("pikat.dat","rb");

for (i=0; i<10 ;i++){

fread(&p, sizeof(pike), 1, f);

cout << p.x << " "<< p.y<< endl;

}

fclose (f);

cout << endl;

return 0;

} MSc. Elisa Reci 15 Semestri II/2013

Page 16: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Ushtrimi 2

• Ndertoni nje program qe ruan ne nje skedar binar emrat e mbiemrat e disa personave dhe pastaj e lexon ate skedar duke afishuar te gjithe emrat e ruajtur.

MSc. Elisa Reci 16 Semestri II/2013

Page 17: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Ushtrimi 3

• Ndertoni nje program qe llogarit sa here perseritet karakteri 'e' kur jepet si input nga perdoruesi nje sekuence me karaktere.

MSc. Elisa Reci 17 Semestri II/2013

Page 18: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Ndryshimi i nje strukture ne s.binare

• Per te hyre ne strukture duhet ditur nr identifikues i tij.

• Normalisht ato pajisen ne menyre automatike me nga nje indentifikues duke filluar nga 0.

• Per tu pozicionuar tek struktura me nr identifikimi n perdoret fseek

fseek(f,sizeof(pike)*n, 0)

MSc. Elisa Reci 18 Semestri II/2013

Page 19: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Ndryshimi i nje strukture ne s.binare

• f-skedarin

• Sizeof(pike) –madhesine e struktures

• 0- tregon qe kerkimi do filloje nga struktura e pare e skedarit.

• Ne rast se kerkimi fillon nga struktura e radhes shenohet 1

• Kurse nga fundi i skedarit shenohet 2.

MSc. Elisa Reci 19 Semestri II/2013

Page 20: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Ushtrimi 4

• Ndertoni nje program qe ndryshon strukturen e 5 te programit ne 999...

• Kujdes struktura 5 e ka nr e identifikimit = 4

MSc. Elisa Reci 20 Semestri II/2013

Page 21: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

#include <cstdlib>

#include <iostream>

#include <cstdio>

using namespace std;

typedef struct {

int x,y;

}pike;

int main(){

int i ; FILE *f ; pike p;

f = fopen("pikat.dat" , "wb");

for (i=0; i<10 ; i++){

p.x =i;

p.y = i * i;

fwrite (&p, sizeof(pike),1,f);

}

fclose(f);

//krijohet skedari prej 10 anetaresh

f = fopen("pikat.dat" , "rb");

for (i=0; i<10 ; i++){

fread(&p, sizeof(pike), 1, f);

cout << p.x << " "<< p.y<< endl;

}

fclose(f);

//lexohen 10 strukturat

f=fopen ("pikat.dat","r+b");

//pozicionohemi tek id=4. fseek(f,sizeof(pike)*4,0);

fread(&p, sizeof(pike), 1, f);

p.x= 999;

p.y= 666;

fseek(f,sizeof(pike)*4,0);

//ripozicionim i id=4

fwrite (&p, sizeof(pike), 1, f);

fclose (f);

f = fopen("pikat.dat" , "rb");

for (i=0; i<10 ;i++){

fread(&p, sizeof(pike), 1, f);

cout << p.x << " "<< p.y<< endl;

}

fclose (f);

cout << endl;

return 0;

}

MSc. Elisa Reci 21 Semestri II/2013

Page 22: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Ushtrimi 5

• Ndertoni nje program qe ndryshon strukturen e 9 te programit ne karakterin ‘*‘

MSc. Elisa Reci 22 Semestri II/2013

Page 23: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Perseritja e nje s.binar

• Krijohet nje skedar i ri qe pasqyron ndryshimet e skedarit ekzistues.

• Ky skedar i ri rezervohet kurse ai i meparshmi mund te fshihet.

MSc. Elisa Reci 23 Semestri II/2013

Page 24: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

S.Binar te renditur

• Nje skedar f quhet i renditur me renditje te pare sipas fushes f1, me renditje te dyte sipas fushes f2 e keshtu me rradhe…..

MSc. Elisa Reci 24

10 25 25 30 30

X C F A K EOF

Semestri II/2013

Page 25: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Shkrirja e 2 s.b te renditur

• Bashkimi i 2 ose me shume skedareve ne nje skedar te vetem.

• Skedaret duhet te jene te renditur sipas te njejtes fushe.

• Prsh

Typedef struct{

Int f1;char f2[10];

} regj;

MSc. Elisa Reci 25 Semestri II/2013

Page 26: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

3 7 10 EOF M O P

MSc. Elisa Reci 2613

5 7 9 13 23 EOF A X B K N

3 5 7 7 9 10 13 23 EOF M A O X B P K N

Semestri II/2013

Page 27: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Ushtrimi 6

• Algoritmi i meposhtem jep leximin e nje skedari edhe kur arrihet fundi i EOF

MSc. Elisa Reci 27 Semestri II/2013

Page 28: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Void lexoFundSkedari(FILE *s, regj &r){

Fread(&r,sizeof(regj),1,s);

If (feof(s) r.f1 =maxint;

}

Void shkri(FILE *s1, FILE *s2, FILE *sr){

Regj r1, r2;

lexoFundSkedari(s1,r1);

lexoFundSkedari(s2,r2);

While ((r1.f1 < maxint ) || (r2.f1 < maxint ) ) {

If (r1.f1 < r2.f1){

Fwrite (&r1, sizeof(regj),1,sr)

lexoFundSkedari (s1,r1) ; }

Else {

Fwrite (&r2, sizeof(regj),1,sr)

lexoFundSkedari( s2,r2);}}}

MSc. Elisa Reci 28 Semestri II/2013

Page 29: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

Ushtrimi 7

• Ndertoni programin qe shton nje element x ne nje skedar te renditur duke respektuar renditjen.

MSc. Elisa Reci 29 Semestri II/2013

Page 30: Strukture te Dhenash Seminar 1 - Informatikelisareci.weebly.com/.../2/0/3/7/20379979/s.dh-seminar8.pdfStrukture te Dhenash Seminar 8 ELISA RECI Universiteti Luigj Gurakuqi Fakulteti

MSc. Elisa Reci 30 Semestri II/2013