Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Csempe Programozás érettségi mintafeladat 2004.03.19.

Hasonló előadás


Az előadások a következő témára: "Csempe Programozás érettségi mintafeladat 2004.03.19."— Előadás másolata:

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

2 Csempe2 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.

3 Csempe3 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!

4 Csempe4 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

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

6 Csempe6 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

7 Csempe7 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 }

8 Csempe8 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??

9 Csempe9 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;

10 Csempe10 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;

11 Csempe11 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

12 Csempe12 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ő

13 Csempe13 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 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.')

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

15 Csempe15 Kódolás–adatfájl feltöltése 19Begin 20Clrscr; 21Write('Hány adatrekord lesz? '); Readln(n); 22Assign(f,'csempe.dat'); 23rewrite(f); 24For i:=1 to n do 25Begin with ra do 26 begin write('Kérem az ',i,'. rekordot!'); 27 write('kód: '); readln(kod); 28 write('mennyiség: '); readln(menny); 29 write(' r/db: '); 30 end; 31 write(f,ra); 32end; 33close(f);3pont 34clrscr; 35Write('Milyen típusú csempét választott? '); readln(vtip);

16 Csempe16 Kódolás–adatbevitel+csempeszám 35Write('Milyen típusú csempét választott? '); readln(vtip); 36akod:=vtip+'a'; 37bkod:=vtip+'b';1pont 38Write('Milyen széles a burkolandó felület m-ben? '); 39readln(szel); szel:=szel*100; 40Write('Milyen magas a burkolandó felület m-ben? '); 41readln(mag); mag:=mag*100;1pont 42oszl:=szel div 15; 43If (oszl*15)<szel then oszl:=oszl+1; 44sor:=mag div 15; 45If (sor*15)<mag then sor:=sor+1; 46adb:=sor*oszl;2pont 47sor:=mag div 22; 48If (sor*22)<mag then sor:=sor+1; 49bdb:=sor*oszl;2pont 50reset(f);

17 Csempe17 Keresés–melyik olcsóbb 50reset(f); 51l:=false; 52While not(l) and not(eof(f)) do 53 begin read(f,ra); 54 l:=ra.kod=akod; 55 end;3pont 56If not(l) 57 then write('Nincs ilyen csempe a raktárban.')1pont 58 else begin read(f,rb); 1pont 59 aar:=ra.ar*adb; 60 bar:=rb.ar*bdb;1pont 61 Writeln('A 15*15-ösből ',adb,'db szükséges. Az ára: ',aar); 62 Writeln('A 22*15-ösből ',bdb,'db szükséges. Az ára: ',bar); 63 If (adb<=ra.menny) and (bdb<=rb.menny)1pont 64 then begin If aar<bar 65 then write ('A 15*15-ös az olcsóbb.')1pont 66 else begin 67 If bar<aar then write('A 22*15-ös az olcsóbb')1pont

18 Csempe18 Kódolás–valamelyikből nincs elég 67. If bar<aar then write('A 22*15-ös az olcsóbb')1pont 68. else write('Azonos az áruk.')1pont 69. end 70. end 71.else begin 72. If (adb>ra.menny) and (bdb<=rb.menny) 73. then write('Csak a 22*15-ösből van elég.')2pont 74. else begin 75. If (adb rb.menny) 76. then write('Csak a 15*15-ösből van elég.')2pont 77. else begin 78. If (adb>ra.menny) and (bdb>rb.menny) 79. then write('Egyik fajtából sincs elég raktáron.') 80. end2pont 81. end 82. end 83. end; close(f); 84. Readln; 85.84End.

19 Csempe19 Tesztadatok fájlban vagy tömbben van mindkettő, de kevés2pont 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)


Letölteni ppt "Csempe Programozás érettségi mintafeladat 2004.03.19."

Hasonló előadás


Google Hirdetések