Programozási alapismeretek 4. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/472014. 07. 14.2014. 07. 14.2014. 07. 14.  A szöveg A szöveg.

Slides:



Advertisements
Hasonló előadás
Programozási tételek, és „négyzetes” rendezések
Advertisements

Tömbök C#-ban.
Programozási alapismeretek
Algoritmus és programozás
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
Algebrai specifikációk Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
INFOÉRA 2006 Kombinatorika
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Algoritmizálás, adatmodellezés tanítása 4. előadás
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Programozási ismeretek oktatása: kód vagy algoritmus
Programozási alapismeretek 2. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 2.2/  Adatokkal kapcsolatos.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Programozási alapismeretek 3. előadás
Programozási alapismeretek 13. előadás. ELTE Érdekességek - kombinatorika  Az iskola bejáratánál N lépcsőfok van. Egyszerre maximum K fokot tudunk lépni,
Programozási alapismeretek
Programozási alapismeretek 1. előadás
Programozási alapismeretek 10. előadás
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Programozási alapismeretek 11. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom.
Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/
Programozási alapismeretek 12. előadás. ELTE  Tapasztalatok a rendezésről Tapasztalatok a rendezésről  Keresés rendezett sorozatban Keresés rendezett.
Sztringek.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Készítette: Pető László
Fák, bináris fák INFOÉRA Ez így 60 perc.
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Keresés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 8.1/ Kiválogatás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 10.1/ Összegzés mátrixra Feladat: Egy mátrix elemeinek összege.
Web-grafika (VRML) 10. gyakorlat Kereszty Gábor. Script típusok Elemi típusok: szám: egész vagy lebegőpontos – int / float – 1 / 1.1 string: ‘Hello World!’
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Sorozatszámítás Specifikáció (a végleges) :  Bemenet:
ELTE Szlávi-Zsakó: Programozási alapismeretek Szlávi-Zsakó: Programozási alapismeretek 3. 1/
Copyright, 1999 © Szlávi Péter Prioritási sor típuskonstrukció Szlávi Péter ELTE Informatika Szakmódszertani Csoport
ELTE Adatokkal kapcsolatos fogalmak  Konstans: az az adat, amely a műveletvégzés során nem változtat(hat)ja meg értékét, mindvégig ugyanabban az „állapotban”
VI. Konténerek 18. Tömbök 19. Rendezés, keresés, karbantartás
VI. Konténerek 18. Tömbök 19. Rendezés, keresés, karbantartás
Karakterláncok Páll Boglárka. Karakterláncok Karakterlánc olyan karakterek sorozata amelyek az ASCII táblázatban találhatók. Maximális hossza rögzített,
Rendezések és szövegkezelő függvények
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Specifikáció Specifikáció Követelményei: Tömör legyen, egyértelmű, precíz, jól formalizált, szemléletes, érthető Meg kell adni a program bemenő adatait.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Java programozási nyelv Filekezelés
Komoróczy Tamás 1 Java programozási nyelv Stringek.
Algoritmizálás, adatmodellezés tanítása 7. előadás
Copyright, 1999 © Szlávi Péter Sor típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Objektum orientált programozás
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Táblázatkezelés KÉPLETEK.
INFOÉRA 2006 Nagypontosságú aritmetika I.
Programozási alapismeretek * A Zh-írás módszertana.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Algoritmizálás, adatmodellezés
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Programozási alapismeretek 11. előadás
Programozási alapismeretek 2. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 2.2/  Adatokkal kapcsolatos.
Összeállította: Gergely János
INFOÉRA 2006 Nagypontosságú aritmetika II.
Programtervezés, programozás I. 2.5 tömbök,stringek
Programozási alapismeretek 4. előadás. ELTE  Programozási tételek – a lényeglényeg  Sorozatszámítás – összegzés… Sorozatszámítás  Megszámolás.
INFOÉRA 2006 Nagypontosságú aritmetika III.
Halmazműveletek.
Programozási alapismeretek 2. előadás
Programozási tételek.
Előadás másolata:

Programozási alapismeretek 4. előadás

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/  A szöveg A szöveg  Feladattípus: tömb bemenet, tömb kimenet tömb bemenet, tömb kimenet  Feladattípus: szöveg bemenet, szöveg kimenet szöveg bemenet, szöveg kimenet  Feladattípus: tömb bemenet, érték kimenet tömb bemenet, érték kimenet  Feladattípus: érték bemenet, tömb kimenet érték bemenet, tömb kimenet  Példák Példák Tartalom

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.3/ Szöveg A szöveg és a tömb  hasonlóak: o egyféle típusú elemekből állnak, o indexelhetők;  különbözőek: o a tömb elem- (és index-) típussal paramétere- zendő (típuskonstrukciós eszköz), a szöveg ka- rakter típusú elemekből áll, o algoritmikusan (!) a szöveg 1-től indexelhető, a tömb deklarációtól függően, o a tömb hossza konstans, a szövegé változtat- ható; szövegeken értelmezve van a hossz() függvény és a + művelet, o problémás az elemmódosítás a szöveg típusnál!

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.4/ Szöveg (C++)  Fontosabb string-műveletek ( tegyük föl, hogy: string a; ) o …""… //üres szöveg; pl.: a="" o cin >> a;//olvasás szóközig v. sorvégig o getline(cin,a,’\n’); //olvasás ’\n’-ig o getline(cin,a,’x’); //olvasás ’x’ jelig o …a.length()… //a karakterei száma o …a.size()… //=a.length() o …+… //hozzáírás (konkatenáció) o …a[i]… //a szöveg i. jele, 0  i<a.length() o …a.at(i)… //=a[i], objektumos jelöléssel

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.5/ Szöveg (C++)  Fontosabb string-műveletek ( string a; ) o …a.find(mit)… //a mit szöveg helye a-ban o …a.substr(tól,ig)… //=a[tól..ig] o a.replace(tól,db,mivel); //tól db jelet //helyettesít mivel o Kapcsolódó char-műveletek ( string a; ) o …isalpha(a[i])… //a[i] ’a’..’z’, // ’A’..’Z’? o …isdigit(a[i])… //a[i] ’0’..’9’? o …isupper(a[i])… //a[i] ’A’..’Z’? o …islower(a[i])… //a[i] ’a’..’z’? o …tolower(a[i])… //a[i]-t kisbetűssé //alakítja o …toupper(a[i])… //a[i]-t nagybetűssé //alakítja

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.6/ Szöveg Feladat: Fordítsuk meg egy szó (szöveg) betűsor- rendjét! Specifikáció:  Bemenet: S:Szöveg  Kimenet: T:Szöveg  Előfeltétel: – hosszhossz hosszhossz  Utófeltétel: hossz(T)=hossz(S) és  i (1  i  hossz(S)): T[i]=S[hossz(S)–i+1] Előre definiált függvény: hossz hossz hossz: Szöveg  Egész hossz(s):=s karaktereinek a száma

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.7/ Algoritmus: A szöveg i-edik karaktere nem módosítható, ha még nincs. Szükséges a + művelet! vagy Szöveg T:= "" i=hossz(S)..1; –1-esével T:=T+S[i] T:= "" i=1..hossz(S) T:=S[i]+T

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.8/ Szöveg Feladat: Adjuk meg egy egyszerű angol névhez a monogramját (pl. James Black  JB)! Specifikáció:  Bemenet: Név:Szöveg  Kimenet: Mon:Szöveg  Előfeltétel: SzabályosE(Név) Megjegyzés: a név szabályos, ha csak a szó- kezdőbetűk nagyok, de azok biztosan… feltesszük, hogy létezik a „SzabályosE: Szöveg  Logikai” függvény.

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.9/ Szöveg  Utófeltétel:és  i (1  i  hossz(Mon)): NagybetűE(Mon[i]) és Mon  Név  Feltesszük, hogy létezik a 1. „NagybetűE:Karakter  Logikai” függvény, 2. „  ” művelet, az ún. részsorozata-e műve- let (x  y akkor igaz, ha x legfeljebb y ele- meinek elhagyásával képezhető).

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.10/ Szöveg Algoritmus: Mon:= "" i=1..hossz(Név) NagybetűE(Név[i]) Mon:=Mon+Név[i]─ I N

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.11/ Szöveg Feladat: Adjuk meg egy magyar névhez a monogram- ját (pl. Szabó Éva  SzÉ)! Specifikáció:  Bemenet: Név:Szöveg  Kimenet: Mon:Szöveg  Előfeltétel: SzabályosE(Név)  Utófeltétel: … hf … Problémák: a monogramban nagybetűk szerepel- nek, valamint a kettős mássalhangzókból a nagybe- tűt követő kisbetűk.

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.12/ Szöveg Megoldási ötlet: Konstans Többes:Tömb[1..8:Szöveg]= (”Cs”,”Dz”,”Gy”,”Ly”,”Ny”, ”Sz”,”Ty”,”Zs”) Közbevető kérdés: ”Dzs” hova való és miként bonyolítja a megoldást? A megoldás vázlata: képezzük a Név kétbetűs részeit, és megnézzük, hogy bent van-e a Többesben, vagy a betűpár első jele nagybetűs-e, ha igen, akkor monogram- hoz írjuk…

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.13/ Szöveg Algoritmus: Hívhatnak-e valakit „Nagy A”-nak? Fölcse- rélhetők-e a feltételek? Optimális? Mon:= "" i=1..hossz(Név)–1 K:=Név[i]+Név[i+1] K  Többes Mon:=Mon+KNagybetűE(Név[i]) Mon:=Mon+ Név[i]  I N I N

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.14/ Karakterhasonlítás Feladat: Döntsük el, hogy az A vagy a B betű van-e a magyar ábécében előbb! Specifikáció:  Bemenet: A,B:Karakter  Kimenet: Előbb:Logikai  Előfeltétel: BetűE(A) és BetűE(B)  Utófeltétel: Előbb=A  M B  Definíció: x  M y akkor és csak akkor, ha ???  Feltételezés:  BetűE:Karakter  Logikai függvény

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.15/ Karakterhasonlítás Megoldásötlet: Tároljuk a helyes sorrendben a betűket, és amelyi- ket előbb lehet megtalálni, az az előbbi.  Definíció: Konstans Betűk:Tömb[1..2*35:Karakter]= (”a”,”A”,”á”,”Á”,”b”,”B”,…,”z”,”Z”) x  M y akkor és csak akkor, ha i  j : x=Betűk[i] és y=Betűk[j] Egy másik megoldás alapulhat egy szövegen is: Konstans Betűk:Szöveg=”aAáÁbB…zZ”Szöveg Melyik a jobb?

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.16/ Karakterhasonlítás Algoritmus: Kérdés: mi lenne, ha az ef. nem teljesülne? Lehetne-e ”a”=”A”? (i-1) div 2≤(j-1) div 2? i:=1 Betűk[i]≠A i:=i+1 j:=1 Betűk[j]≠B j:=j+1 Előbb:=i≤j

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.17/ Szóhasonlítás Feladat: Döntsük el, hogy az ábécében az A vagy a B szó van-e előbb! Specifikáció:  Bemenet: A,B:Szöveg  Kimenet: Előbb:Logikai  Előfeltétel: SzóE(A) és SzóE(B)  Utófeltétel: Előbb=A  B  Feltételezés:  SzóE:Szöveg  Logikai függvény

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.18/ Szóhasonlítás  Definíció (alfabetikus rendezés): (1) Az a szó van ábécében előbb, amelyik első különböző betűje előbb van; (2) az  üres szó minden szónál előbb van.  Példák: ”alfa” ”al”  ”f…”> M  ”alma”≤”alma”   ≤ M  (1) (2)

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.19/ Algoritmus: A karakterhasonlításra használjuk az elő- ző feladat megoldását (úgy, hogy A helyébe A[i], B helyébe B[i] kerüljön) ! Szóhasonlítás i:=1 i≤hossz(A) és i≤hossz(B) és A[i]=B[i] i:=i+1 Előbb:=(i>hossz(A)) vagy (i≤hossz(B) és A[i]  M B[i])

ELTE Szlávi-Zsakó: Programozási alapismeretek 4.20/ Tömb bemenet, tömb kimenet Feladat: Ismerjük az elmúlt N napon délben mért hő- mérsékletet. Add meg, hogy mely napokon volt pozitív vagy 0 (+), illetve negatív (–) a hő- mérséklet! Specifikáció:  Bemenet: N:Egész; H:Tömb[1..N:Egész]  Kimenet: E:Tömb[1..N:Karakter]  Előfeltétel: N  0  Utófeltétel:  i(1  i  N): ( H[i]  0  E[i]="+" és H[i]<0  E[i]="–" )

ELTE Tömb bemenet, tömb kimenet Algoritmus: Kódoláshoz: A kimeneti tömb (már) akkor deklarál- ható, amikor a bemeneti tömb mérete ismertté válik. (Hiszen a bemeneti tömb- bel azonos elemszámú.)deklarál- ható I N Szlávi-Zsakó: Programozási alapismeretek 4. 21/ i=1..N H[i]  0 E[i]:=”+”E[i]:=”–”

ELTE Tömb bemenet, tömb kimenet Feladat: Ismerjük az elmúlt N napon délben mért hőmérsékletet. Add meg minden 7-napos időszakra az átlaghőmérsékletet! Specifikáció:  Bemenet: N:Egész; H:Tömb[1..N:Egész]  Kimenet: A:Tömb[1..N–6:Valós]  Előfeltétel: N  7  Utófeltétel:  i(1  i  N–6): Megjegyzés: 7 egymás utáni szám összegéből a következő összeg egyszerűbben is számolható: A[i]:=(7*A[i–1]–H[i–1]+H[i+6])/7 Szlávi-Zsakó: Programozási alapismeretek 4. 22/

ELTE Tömb bemenet, tömb kimenet S:=0 i=1..7 S:=S+H[i] A[1]:=S/7 i=2..N –6 S:=S–H[i–1]+H[i+6] A[i]:=S/7 Algoritmus: Szlávi-Zsakó: Programozási alapismeretek 4. 23/

ELTE Szöveg bemenet, szöveg kimenet Feladat: Írj programot egy szó magas- (=), illetve mély (–) hangrendű szótagjai megadására! Specifikáció:  Bemenet: S:Szöveg  Kimenet: H:Szöveg  Előfeltétel: SzóE(S)  Utófeltétel: hossz(X)=hossz(S) és  i(1  i  hossz(S)): S[i]  {"a","á","o","ó","u","ú"}  X[i]="–" és S[i]  {"e","é","i","í","ö","ő","ü","ű"}  X[i]="=" és S[i]  Mássalhangzók  X[i]=" " és H  X és SzóközNélküliE(H) és hossz(H)=  Szlávi-Zsakó: Programozási alapismeretek 4. 24/

ELTE Szöveg bemenet, szöveg kimenet H:=”” i=1..hossz(S) S[i]  {”a”,”á”,”o”, ”ó”,”u”, ”ú”} S[i]  {”e”,”é”, ”i”,”í”,”ö”, ”ő”,”ü”,”ű”} H:=H+” – ”H:=H+”=” Algoritmus: Megspórolható a segéd X szöveg, ha mind- járt átlépjük a szóközzé konvertálandókat, amiket aztán ki kellene hagynunk. Szlávi-Zsakó: Programozási alapismeretek 4. 25/

ELTE Érték bemenet, tömb kimenet Feladat: Adjuk meg a K kezdőelemű, L lépésközű számtani sorozat első N tagját! Specifikáció 1 :  Bemenet: K,L,N:Egész  Kimenet: S:Tömb[1..N:Egész]  Előfeltétel: N  0  Utófeltétel:  i (1≤i≤N): S[i]=K+(i – 1)*L Algoritmus 1 : i=1..N S[i]:=K+(i–1)*L Szlávi-Zsakó: Programozási alapismeretek 4. 26/

ELTE Érték bemenet, tömb kimenet Az uf. „egyszerűbben” is megfogalmazható (rekurzív módon). Specifikáció 2 :  Bemenet: K,L,N:Egész  Kimenet: S:Tömb[1..N:Egész]  Előfeltétel: N  0  Utófeltétel: S[1]=K és  i (2≤i≤N): S[i]=S[i–1]+L Algoritmus 2 : Szlávi-Zsakó: Programozási alapismeretek 4. 27/ S[1]:=K i=2..N S[i]:=S[i–1]+L

ELTE Tömb bemenet, érték kimenet Feladat: Egy repülőgéppel Európából Amerikába re- pültünk. Az út során X kilométerenként mértük a felszín tengerszint feletti magassá- gát (  0). 0 magasságot ott mértünk, ahol tenger van, >0-t pedig ott, ahol szárazföld. Adjuk meg az óceán két partját! Szlávi-Zsakó: Programozási alapismeretek 4. 28/

ELTE Tömb bemenet, érték kimenet Specifikáció:  Bemenet: N:Egész, Mag:Tömb[1..N:Egész]  Kimenet: E,U:Egész  Előfeltétel: Mag[1]>0 és Mag[N]>0 és  i(1<i<N): Mag[i]  0 és  i(1<i<N): Mag[i]=0 [  N  3]  Utófeltétel: Mag[E]=0 és Mag[U]=0 és  i(1  i 0 és  i(U 0 Szlávi-Zsakó: Programozási alapismeretek 4. 29/

ELTE Tömb bemenet, érték kimenet E:=2 Mag[E]>0 E:=E+1 U:=N–1 Mag[U]>0 U:=U–1 Algoritmus: Ötlet: elölről, illetve hátulról haladva kivá- lasztjuk a megfelelő elemet. Szlávi-Zsakó: Programozási alapismeretek 4. 30/

ELTE További példák Feladat: Egy repülőgéppel Európából Amerikába repültünk. Az út során X kilométerenként mértük a felszín tengerszint feletti magas- ságát (  0). 0 magasságot ott mértünk, ahol tenger van, >0-t pedig ott, ahol szárazföld. Adjuk meg a szigeteket! Szlávi-Zsakó: Programozási alapismeretek 4. 31/

ELTE További példák Specifikáció:  Bemenet: N:Egész, Mag:Tömb[1..N:Egész]  Kimenet: Db:Egész, K,V:Tömb[1..Db:Egész]  Előfeltétel: Mag[1]>0 és Mag[N]>0 és  i(1<i<N): Mag[i]  0 és  i(1<i<N): Mag[i]=0 [  N  3]  Utófeltétel: Db= és HalmazEHalmazE RendezettERendezettE  i (1≤i≤Db): SzigetkezdetE(K[i]) és  i (1≤i≤Db): SzigetvégE(V[i]) és HalmazE(K) és HalmazE(V) és RendezettE(K) és RendezettE(V) Előre definiált függvény: HalmazE HalmazE(sorozat):=a sorozatban minden elem csak egyszer van-e? Szlávi-Zsakó: Programozási alapismeretek 4. 32/ RendezettE(sorozat):=a sorozat- ban minden elem nagyobb vagy egyen- lő-e, mint az előző?

ELTE További példák  Definíció: SzigetkezdetE:[2..N]  Logikai SzigetkezdetE(i):=Mag[i]>0 és Mag[i–1]=0 SzigetvégE:[1..N–1]  Logikai SzigetvégE(i):=Mag[i]>0 és Mag[i+1]=0 Kérdés: Mi lesz Európa és Amerika partjával? Megoldás: 2 és N–1 helyett csak az előző feladat szerinti E és U között keresünk szigeteket. Szlávi-Zsakó: Programozási alapismeretek 4. 33/

ELTE További példák Specifikáció:  Bemenet: N:Egész, Mag:Tömb[1..N:Egész]  Kimenet: Db:Egész, K,V:Tömb[1..Db:Egész]  Előfeltétel: Mag[1]>0 és Mag[N]>0 és  i(1<i<N): Mag[i]  0 és  i(1<i<N): Mag[i]=0 [  N  3]  Utófeltétel: Db= és E? és U? ésés E? és U?  i (1≤i≤Db): SzigetkezdetE(K[i]) és K[i] E és HalmazE(K) és HalmazE(V) és RendezettE(K) és RendezettE(V) Szlávi-Zsakó: Programozási alapismeretek 4. 34/

ELTE További példák … E, U előállítása … Db:=0 i=E..U SzigetkezdetE(i) Db:=Db+1  K[Db]:=i SzigetvégE(i) V[Db]:=i  Algoritmus: Használjuk ki, hogy kezdet és vég csak fel- váltva következhetnek! I N I N Szlávi-Zsakó: Programozási alapismeretek 4. 35/

ELTE További példák Kódoláshoz: Probléma: a számítás során jön ki a kimeneti tömb elem- száma, s közben kellene az elemeit is gyűjteni. Megoldás 1 : Előre definiálunk egy maximális kimeneti tömb- méretet (MaxDb), s ekkorára deklaráljuk a K és a V tömböt). (L. a 3. előadásban.)3. előadás Megoldás 2 : Eltérünk az algoritmustól: először meghatároz- zuk a Db-t, majd összegyűjtjük a K-t, V-t. Szlávi-Zsakó: Programozási alapismeretek 4. 36/

ELTE További példák Feladat: Egy folyón N helyen mérik a vízállást, amit egy referenciamagassághoz képest centiméterben ad- nak meg. Elsőfokú árvízvédelmi készültséget kell elrendelni, ha a magasság meghaladja a 800 centi- métert, másodfokút, ha meghaladja a 900 centi- métert és harmadfokút, ha meghaladja az 10 métert. Folyószakasznak nevezzük a leghosszabb egymás mellett levő egyforma tulajdonságú méré- sekből álló sorozatokat. Árvíznek nevezzük azt a folyószakaszt, ahol minden hely legalább elsőfo- kú készültségű. Adjuk meg, hogy hány folyószakaszon volt árvíz! Szlávi-Zsakó: Programozási alapismeretek 4. 37/

ELTE További példák Specifikáció:  Bemenet: N:Egész, F:Tömb[1..N:Egész]  Kimenet: Db:Egész  Előfeltétel: N  0  Utófeltétel: Db= Szlávi-Zsakó: Programozási alapismeretek 4. 38/

ELTE Algoritmus 1 : Annyi szakaszon volt árvíz, ahány helyen árvíz kezdődött (vagy már az elején is árvíz volt). További példák F[1]  800 Db:=0Db:=1 i=1..N–1 F[i]  800 és F[i+1]>800 Db:=Db+1  IN I N Szlávi-Zsakó: Programozási alapismeretek 4. 39/

ELTE További példák Algoritmus 2 : Annyi szakaszon volt árvíz, ahány helyen árvíz végződött (vagy az utolsó mérésnél is árvíz volt). F[N]  800 Db:=0Db:=1 i=2..N F[i]  800 és F[i-1]>800 Db:=Db+1  NI N I Szlávi-Zsakó: Programozási alapismeretek 4. 40/

ELTE További példák Feladat: Egy folyón N helyen mérik a vízállást, amit egy referenciamagassághoz képest centimé- terben adnak meg. … Adjuk meg az árvizek hosszát! Feltehetjük, hogy az első és az utol- só mérésnél nem volt árvíz.… Szlávi-Zsakó: Programozási alapismeretek 4. 41/

ELTE További példák Specifikáció:  Bemenet: N:Egész, F:Tömb[1..N:Egész]  Kimenet: Db:Egész, H:Tömb[1..Db:Egész]  Előfeltétel: N  1 és F[1]  800 és F[N]  800  Utófeltétel: Db= és  i (1≤i≤Db): H[i]=árvízvég[i]–árvízkezdet[i]+1  Definíció: árvízvég:Tömb[1..Db:Egész] … árvízkezdet:Tömb[1..Db:Egész] … Szlávi-Zsakó: Programozási alapismeretek 4. 42/

ELTE További példák Db:=0 i=1..N–1 F[i]  800 és F[i+1]>800 Db:=Db+1  H[Db]:=0 F[i]>800 H[Db]:=H[Db]+1  Algoritmus: Ötlet: a megfelelő számlálót árvízkezdetnél nullázzuk, árvíznél pedig növeljük. I N I N Szlávi-Zsakó: Programozási alapismeretek 4. 43/

ELTE További példák Feladat: Lóversenyre járunk. N napon át naponta fel- jegyeztük, hogy mennyit nyertünk (  0) vagy vesztettünk (<0). Ha kezdetben X forintunk volt, akkor mely napon kellett először köl- csön kérnünk? Szlávi-Zsakó: Programozási alapismeretek 4. 44/

ELTE További példák Specifikáció:  Bemenet: N,X:Egész, P:Tömb[1..N:Egész]  Kimenet: Van:Logikai, Nap:Egész  Előfeltétel: N  0 és X  0  Utófeltétel: Van=  i(1  i  N): és Van  ( 1  Nap  N és és  i(1  i<Nap) és ) Szlávi-Zsakó: Programozási alapismeretek 4. 45/

ELTE További példák S:=X i:=1 i  N és S+P[i]>0 S:=S+P[i] i:=i+1 Van:= i  N Van Nap:=i  Algoritmus: I N Szlávi-Zsakó: Programozási alapismeretek 4. 46/

Programozási alapismeretek 4. előadás vége