Feladat

24
1. 1. Feladat Feladat A Helyes Zárójelezés A Helyes Zárójelezés Struktogramja Struktogramja

description

Feladat. A Helyes Zárójelezés Struktogramja. A Helyes Zárójelezés. Az algoritmus egy garantáltan helyes zárójelezés minden összetartozó nyitó- és csukózárójelpárjának a sorszámait egymás mellé kiírja. Egy példa. (( )) ((( ))) ( ) ?? - PowerPoint PPT Presentation

Transcript of Feladat

Page 1: Feladat

1.1. FeladatFeladat

A Helyes Zárójelezés StruktogramjaA Helyes Zárójelezés Struktogramja

Page 2: Feladat

A Helyes ZárójelezésA Helyes Zárójelezés Az algoritmus egy Az algoritmus egy garantáltan garantáltan helyes zárójelezés helyes zárójelezés

minden összetartozó nyitó- és csukózárójelpárjánakminden összetartozó nyitó- és csukózárójelpárjának

a sorszámait egymás mellé kiírja.a sorszámait egymás mellé kiírja.

Page 3: Feladat

Egy példaEgy példa

(( )) ((( ))) ( )(( )) ((( ))) ( ) ?? ??

12 34 567 8910 11 1212 34 567 8910 11 12 ????

Page 4: Feladat

A StruktogramA Struktogram

HZ(s)

Empty(V); I := 0

S!=EOF

Read(S,X); I:=I+1

Pop(V,J)

Write(J,I)

Push(V,I)

X=“(” X=“)”

Page 5: Feladat

A A példa megoldásapélda megoldása

Üres verem létrehozása, Üres verem létrehozása, ‘‘II’’ index 0-ra állítása. index 0-ra állítása.

V verem: IV verem: I:=0;:=0;

(üres)(üres)

Page 6: Feladat

A A példa megoldásapélda megoldása

Az első elem - nyitózárójel. az Az első elem - nyitózárójel. az ‘‘II’’ indexet növeljük indexet növeljük

1-el, és a 1-el, és a ““11”” –est betesszük a verembe. –est betesszük a verembe.

“1”((( )) ((( ))) ( )( )) ((( ))) ( )

Page 7: Feladat

A A példa megoldásapélda megoldása

AA 2. elem 2. elem isis nyitózárójel. Az nyitózárójel. Az ‘‘II’’ indexet növeljük indexet növeljük

1-el, és a 1-el, és a ““22”” – est betesszük a verembe. – est betesszük a verembe.

“1”“2” (((( )) ((( ))) ( ) )) ((( ))) ( )

Page 8: Feladat

A A példa megoldásapélda megoldásaAz 3. elem - csukózárójel. az Az 3. elem - csukózárójel. az ‘‘II’’ indexet növeljük indexet növeljük

1-el, a 2-est kivesszük a veremből. A 2-est és a 3-ast1-el, a 2-est kivesszük a veremből. A 2-est és a 3-ast

kiírjuk : megvan az első zárójelpár!kiírjuk : megvan az első zárójelpár!

Output:Output:

(2,3),(2,3),

“1”(( (( ))) ((( ))) ( )) ((( ))) ( )

Page 9: Feladat

A A példa megoldásapélda megoldásaAz 4. elem - csukózárójel. az Az 4. elem - csukózárójel. az ‘‘II’’ indexet növeljük indexet növeljük

1-el, a 1-est kivesszük a veremből. A 1-est és a 4-est1-el, a 1-est kivesszük a veremből. A 1-est és a 4-est

kiírjuk. Megvan az második zárójelpár!kiírjuk. Megvan az második zárójelpár!

Output:Output:

(2,3),(1,4),(2,3),(1,4),

(( )(( ))) ((( ))) ( ) ((( ))) ( )

Page 10: Feladat

A A példa megoldásapélda megoldásaAz 5. elem nyitózárójel. Az Az 5. elem nyitózárójel. Az ‘‘II’’ indexet növeljük indexet növeljük

1-el, és az 1-el, és az ““55”” – öst betesszük a verembe. – öst betesszük a verembe.

Output:Output:

(2,3),(1,4),(2,3),(1,4),

“5”(( )) (( )) (((( ))) ( )(( ))) ( )

Page 11: Feladat

A A példa megoldásapélda megoldása

Az 6. elem nyitózárójel. Az Az 6. elem nyitózárójel. Az ‘‘II’’ indexet növeljük indexet növeljük

1-el, és az 1-el, és az ““66”” – ost betesszük a verembe. – ost betesszük a verembe.

Output:Output:

(2,3),(1,4),(2,3),(1,4),

“5”“6” (( )) ((( )) (((( ))) ( )( ))) ( )

Page 12: Feladat

A A példa megoldásapélda megoldásaAz 7. elem nyitózárójel. Az Az 7. elem nyitózárójel. Az ‘‘II’’ indexet növeljük indexet növeljük

1-el, és az 1-el, és az ““77”” – est betesszük a verembe. – est betesszük a verembe.

Output:Output:

(2,3),(1,4),(2,3),(1,4),

“5”“6”“7”

(( )) (((( )) (((( ))) ( ) ))) ( )

Page 13: Feladat

A A példa megoldásapélda megoldásaAz 8. elem - csukózárójel. az Az 8. elem - csukózárójel. az ‘‘II’’ indexet növeljük indexet növeljük

1-el, a 7-est kivesszük a veremből. A 7-est és a 8-ast1-el, a 7-est kivesszük a veremből. A 7-est és a 8-ast

kiírjuk. Megvan a harmadik zárójelpár!kiírjuk. Megvan a harmadik zárójelpár!

Output:Output:

(2,3),(1,4),(7,8),(2,3),(1,4),(7,8),

“5”“6” (( )) ((( (( )) ((( )))) ( ))) ( )

Page 14: Feladat

A A példa megoldásapélda megoldásaAz 9. elem - csukózárójel. az Az 9. elem - csukózárójel. az ‘‘II’’ indexet növeljük indexet növeljük

1-el, a 6-ost kivesszük a veremből. A 6-ost és a 9-est1-el, a 6-ost kivesszük a veremből. A 6-ost és a 9-est

kiírjuk. Megvan a negyedik zárójelpár!kiírjuk. Megvan a negyedik zárójelpár!

Output:Output:

(2,3),(1,4),(7,8),(6,9),(2,3),(1,4),(7,8),(6,9),

“5”(( )) ((( )(( )) ((( )))) ( )) ( )

Page 15: Feladat

A A példa megoldásapélda megoldásaAz 10. elem - csukózárójel. az Az 10. elem - csukózárójel. az ‘‘II’’ indexet növeljük indexet növeljük

1-el, a 5-öst kivesszük a veremből. A 5-öst és a 10-est1-el, a 5-öst kivesszük a veremből. A 5-öst és a 10-est

kiírjuk. Megvan az ötödik zárójelpár!kiírjuk. Megvan az ötödik zárójelpár!

Output:Output:

(2,3),(1,4),(7,8),(6,9),(5,10),(2,3),(1,4),(7,8),(6,9),(5,10),

(( )) ((( ))(( )) ((( )))) ( ) ( )

Page 16: Feladat

A A példa megoldásapélda megoldásaAz 11. elem nyitózárójel. Az Az 11. elem nyitózárójel. Az ‘‘II’’ indexet növeljük indexet növeljük

1-el, és a 1-el, és a ““1111”” – est betesszük a verembe. – est betesszük a verembe.

Output:Output:

(2,3),(1,4),(7,8),(6,9),(5,10),(2,3),(1,4),(7,8),(6,9),(5,10),

“11”(( )) ((( ))) (( )) ((( ))) (( ) )

Page 17: Feladat

A A példa megoldásapélda megoldásaAz utolsó elem - csukózárójel. az Az utolsó elem - csukózárójel. az ‘‘II’’ indexet indexet

növeljük növeljük

1-el, a 11-est kivesszük a veremből.A 5-öst és a 10-est1-el, a 11-est kivesszük a veremből.A 5-öst és a 10-est

kiírjuk. Megvan az utolsó zárójelpár!kiírjuk. Megvan az utolsó zárójelpár!

Output:Output:

(2,3),(1,4),(7,8),(6,9),(5,10),(2,3),(1,4),(7,8),(6,9),(5,10),(11,12)(11,12)

(( )) ((( ))) ( (( )) ((( ))) ( ))

Page 18: Feladat

2. Feladat2. Feladat

Egy egyszerű nem üres lista aktuális elemének a Egy egyszerű nem üres lista aktuális elemének a törlése.törlése.

Page 19: Feladat

A ListaA Lista

Az Az ‘‘ll’’ pointer a listánk első elmére mutat pointer a listánk első elmére mutat, , és a lista és a lista nem üresnem üres : :

ll . . .. . .

aktakt

Az Az aktakt pointer értéke NIL lesz üres lista esetén, de pointer értéke NIL lesz üres lista esetén, de akkor is, ha „lelépünk” a listáról.akkor is, ha „lelépünk” a listáról.

Page 20: Feladat

A Törlés StruktogramjaA Törlés StruktogramjaTöröl(l)

akt = NILp := l

HIBA

akt = l

l:=l.mutakt:=l

dispose(p)

p.mut != akt

p:=p.mut

p.mut := akt.mut

dispose(akt)

akt := p.mut

Page 21: Feladat

Az AktuAz Aktuális Elem Törléseális Elem Törlése

l …

akt

Ha nem NIL az aktuális pointer, de tegyük fel, hogy a legelső :

Ilyenkor az elem törlése az alábbi módon : …

Page 22: Feladat

Az AktuAz Aktuális (Első) Elem Törléseális (Első) Elem Törlésell := := ll.mut :.mut :

aktakt := := ll

dispose(dispose(pp)) ((pp:=:=l l volt a stuki elejvolt a stuki elején), azaz:én), azaz:

l

akt

akt

l

akt

Page 23: Feladat

Az AktuAz Aktuális (Nem Első) Elem Törléseális (Nem Első) Elem Törlésepp.mut !.mut !== akt :akt : (addig l(addig lépünk a pointerrel, míg meg épünk a pointerrel, míg meg

nem találjuk az aktuális elemet).nem találjuk az aktuális elemet).

l … …

akt

p.mut := akt.mut

akt

Page 24: Feladat

Az AktuAz Aktuális (Nem Első) Elem Törléseális (Nem Első) Elem Törlésedispose(dispose(aktakt) :) :

aktakt : :== pp.mut.mut

akt

akt