1 / 19

Csempe

Csempe. Programozás érettségi mintafeladat 2004.03.19. A Csempe feladat szövege - adottak.

sawyer
Download Presentation

Csempe

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Csempe Programozás érettségi mintafeladat 2004.03.19.

  2. A Csempe feladat szövege - adottak Egy burkolatokkal kereskedő áruházban minden falicsempe kétféle méretben található: 15*15cm-es és 22*15cm-es. (Az első szám a csempe magassága a második a csempe szélessége. A minták miatt a csempéket nem lehet elfordítani.) A nagyobb csempe ára 1,35-szöröse a kisebb méretűnek. Az áruház nyilvántartásában a csempéket 5 karakterből álló kóddal jelölik. (A karakterek az angol abc betűi és számok lehetnek.) Az első négy karakter a csempe tulajdonságaira az utolsó a méretre utal. Az utolsó karakterhelyen az A jelöli a 15*15-ös a B a 22*15-ös méretet. A nyilvántartásban tárolják, hogy a csempéből hány db van raktáron (egész típus) és a darabárat. Csempe

  3. Mi a feladat? A vevő vásárláskor megmondja, hogy mekkora falfelületet akar burkolni (a magasságot és a szélességet m-ben), és a minta alapján kiválasztott csempe kódjának első 4 karakterét. Készítsen programot, amely megállapítja, hogy melyikből olcsóbb a szükséges mennyiség. Továbbá kiírja hogy, melyik méretűból van elég raktáron. A program ellenőrzéséhez készítsen megfelelő tesztadatokat minden olyan esetre, amely előfordulhat és írja bele a beadandó programba! Csempe

  4. Megjegyzések a megoldandó problémához • Az 1,35-szöröst számoltatni, majd kerekíttetni akarjuk, vagy számolja ki fejben és írja be? • Az utolsó helyen álló betűt ugye mi akarjuk az adathoz illeszteni?! • A megfelelő tesztadatokat fájlban kérjük tárolni vagy csak kézzel a kódba írni. Jár-e plusz pont a fájlos megoldásért? • Nem olyan könnyű olyan adatokat találni, ahol a 15*15-ös az olcsóbb. Sok időt vihet el amíg kitalálja a versenyző. Ha ezt nem teszteli, akkor mennyi pontot veszít? • Az adatok elkészítéséről nem derül ki, hogy azt is pontozza Csempe

  5. Változók  1 Rekord  a csempe adataira kód: string[5] menny: Integer ar: Real Fájl  a fenti rekordból Csempe

  6. Tesztadatok 1.Nincs ilyen kódú csempe a fájlban 2.Az első rekordban van 3.Az utolsó rekordban van 4.Elég a fájlba 4*2 rekordot írni 5.Köztük egy olyat, ahol nagyon kevés az „A”típus és egy olyat, ahol nagyon kevés a „B”típus Csempe

  7. Változók  2. f : tfile; ra, rb: trek; {célszerű egyszerre látni kétféle méret rekordját} n : Integer; {a csemperekordok száma} vtip: string[4]; {a vásárló által megadott kód} akod, bkod: string[5]; {a két lehetséges csempeméret kódja} mag, szel: egész; {a burkolandó felület magassága, szélessége} adb, bdb: egész; {a típusokhoz tartozó darabszámok} aar, bar: Integer; {a típusokhoz tartozó összárak} oszl, sor: Integer; {a burkolandó felületre szükséges csempeoszlopok ill. sorok száma} l: Boolean; {logikai változó a lineáris kereséshez } Csempe

  8. Adatbevitel Beolvasandó adatok  vtip, szel, mag A vtip beolvasásakor • csak ez első 4 karakter, amit a programban kiegészítünk egy „A” és egy „B” végződésűre • elején (ha ezt választjuk- felesleges tárolás) • menet közben mindig, ha kell • mind az 5 karaktert beolvassuk, ekkor ellenőrizni kellene a programmal  hogyan pontozzuk?? Beolvasási stratégiák • az elején beolvas mindent, vagy • mielőtt bármit csinál ellenőrzi, hogy létezik-e a kód! Futtatási stratégiák • hátul tesztelősen folytatja a futást kívánságra másik kóddal, vagy • újra kell indítani?? Csempe

  9. Algoritmus a keresésig{***A méretek kiszámítása***} {A fájlfeltöltésről nem készült algoritmus} olvas(vtip) akod:=vtip+'a'; bkod:=vtip+'b'; {***Átváltás***} szel:=szel*100; mag:=mag*100; oszl:=szel div 15; If (oszl*15)<szel then oszl:=oszl+1; sor:=mag div 15; If (sor*15)<mag then sor:=sor+1; adb:=sor*oszl; sor:=mag div 22; If (sor*22)<mag then sor:=sor+1; bdb:=sor*oszl; Csempe

  10. A keresés Hozzárendel(f,fizikai fájlnév) reset(f); l:=false; While not(l) and not(eof(f)) do begin read(f,ra); l:=ra.kod=akod; end; Csempe

  11. A keresés eredményének értékelése Ha nem l akkor kiír('Nincs ilyen csempe a raktárban.')** különben Ha van elegendő mindkettőből akkor melyik olcsóbb különben melyik elegendő kiírás(melyiket vegyük) **Ha ismételni akarjuk másik típussal, akkor itt be kell kérni Csempe

  12. melyik olcsóbb Ha aar<bar akkor kiír ('A 15*15-ös az olcsóbb.') különben Ha bar<aar akkor kiír('A 22*15-ös az olcsóbb') különben kiír('Azonos az áruk.') A többirányú elágazás lenne ideális  programnyelvfüggő Csempe

  13. melyik elegendő Ha (adb>ra.menny) és (bdb<=rb.menny) akkor kiír('Csak a 22*15-ösből van elég.') különben Ha (adb<=ra.menny) és (bdb>rb.menny) akkor kiír('Csak a 15*15-ösből van elég.') különben Ha (adb>ra.menny) és(bdb>rb.menny) akkor kiír('Egyik fajtából sincs elég raktáron.') Csempe

  14. Kódolás-deklaráció 1Program csempe; * 2Uses crt; * 3Type trek=record • kod: string[5]; • menny: Integer; • ar: Real; • end; 2pont • tfile=file of trek; 1pont (a tömbre is) 9Var f : tfile; • ra, rb: trek; • n: Byte; • vtip: string[4]; • vkod: string[5]; • mag, szel: Integer; • adb, bdb: Integer; • oszl, sor: Integer; • i: Byte; • l: Boolean; 5pont (arányosan elosztva) 19Begin Csempe

  15. Kódolás–adatfájl feltöltése 19Begin • Clrscr; • Write('Hány adatrekord lesz? '); Readln(n); • Assign(f,'csempe.dat'); • rewrite(f); • For i:=1 to n do • Begin with ra do • begin write('Kérem az ',i,'. rekordot!'); • write('kód: '); readln(kod); • write('mennyiség: '); readln(menny); • write(' r/db: '); • end; • write(f,ra); • end; • close(f); 3pont • clrscr; • Write('Milyen típusú csempét választott? '); readln(vtip); Csempe

  16. Kódolás–adatbevitel+csempeszám • Write('Milyen típusú csempét választott? '); readln(vtip); • akod:=vtip+'a'; • bkod:=vtip+'b'; 1pont • Write('Milyen széles a burkolandó felület m-ben? '); • readln(szel); szel:=szel*100; • Write('Milyen magas a burkolandó felület m-ben? '); • readln(mag); mag:=mag*100; 1pont • oszl:=szel div 15; • If (oszl*15)<szel then oszl:=oszl+1; • sor:=mag div 15; • If (sor*15)<mag then sor:=sor+1; • adb:=sor*oszl; 2pont • sor:=mag div 22; • If (sor*22)<mag then sor:=sor+1; • bdb:=sor*oszl; 2pont • reset(f); Csempe

  17. Keresés–melyik olcsóbb • reset(f); • l:=false; • While not(l) and not(eof(f)) do • begin read(f,ra); • l:=ra.kod=akod; • end; 3pont • If not(l) • then write('Nincs ilyen csempe a raktárban.') 1pont • else begin read(f,rb); 1pont • aar:=ra.ar*adb; • bar:=rb.ar*bdb; 1pont • Writeln('A 15*15-ösből ',adb,'db szükséges. Az ára: ',aar); • Writeln('A 22*15-ösből ',bdb,'db szükséges. Az ára: ',bar); • If (adb<=ra.menny) and (bdb<=rb.menny) 1pont • then begin If aar<bar • then write ('A 15*15-ös az olcsóbb.') 1pont • else begin • If bar<aar then write('A 22*15-ös az olcsóbb') 1pont Csempe

  18. Kódolás–valamelyikbőlnincselég • If bar<aar then write('A 22*15-ös az olcsóbb') 1pont • else write('Azonos az áruk.') 1pont • end • end • else begin • If (adb>ra.menny) and (bdb<=rb.menny) • then write('Csak a 22*15-ösből van elég.') 2pont • else begin • If (adb<=ra.menny) and (bdb>rb.menny) • then write('Csak a 15*15-ösből van elég.') 2pont • else begin • If (adb>ra.menny) and (bdb>rb.menny) • then write('Egyik fajtából sincs elég raktáron.') • end 2pont • end • end • end; close(f); • Readln; • 84End. Csempe

  19. Tesztadatok fájlban vagy tömbben van mindkettő, de kevés 2pont van, de csak a drágább elegendő 2pont van elegendő az olcsóbból 2pont Csempe kódja olyan, amely nem szerepel a raktáron 1pont olyan , amelyből kevés van 2pont olyan, amelyből csak a drágább van 2pont olyan, amelyik éppen megfelelő 2pont Tesztadatok felvitele (a fájlfeltöltésnél pontoztuk 3ponttal) Csempe

More Related