ZER DAKIDAN: Zenbakiak, karaktereak, kateak eta zerrendak (arrayak) lantzeko gai naiz. ZER IKASIKO DUDAN: Oinarrizko datu-mota desberdinak egitura bakar batean antolatzen eta gordetzen ikasiko dut, horretarako Record datu-mota funtsezkoa da. Erregistro batek hainbat eremu izango ditu, adibidez: demagun rdFitxa aldagaia erregistro bat dela eta bere eremu baten identifikadorea iAdina dela, eremu horren erreferentzia egiteko ondoko hau idatzi beharko da rdFitxa.iAdina non puntua lokailu berezia den. |
ESKATZEN DEN PROGRAMA
Erregistro baten eremuak datuz bete eta erregistroaren edukia pantailaratzea. Ariketaren erregistroak ibilgailu baten datuak bilduko ditu.
Erregistroaren egitura honako hau da:
1. eremua | sMatrikula | 'ZZZZ-LLL' formatuko 8 karakteredun kate bat |
2. eremua | cIbilgailuMota | karaktere bat |
3. eremua | rdDataUnea | 2 eremuko erregistroa (eremu bakoitza 3 osoen array bat) |
4. eremua | rAldiunekoAbiadura | zenbaki erreal bat |
Hauxe da ariketaren programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | { 22. ariketa: auto bat radar atari azpitik igartzean ondoko datuak } { jaso eta gordetzen dira erregistro aldagai batean: } { - Matrikula, karkatere-kate bat } { - Ibilgailu mota, karaktere bat } { - Data, 3 zenbakien array bat (posizioak: Urtea, Hilea, Eguna) } { - Unea, 3 zenbakien array bat (posizioak: Orduak, Minutuak, } { Segundoak) } { - Aldi uneko abiadura, zenbaki erreal bat } { Datuak erdi automatikoki lortuko dira auzazko balioak aukeratuz. } program Ariketa_22 ; type tsKateMatrikula = string [ 8 ] ; { ZZZZ-LLL formatuko matrikula } taiData = array [ 1..3 ] of integer ; { Urtea, Hilea, Eguna } taiUnea = array [ 1..3 ] of integer ; { Orduak, Minutuak, Segundoak } trdNoiz = record Eguna : taiData ; Ordua : taiUnea ; end ; trdIbilgailua = record sMatrikula : tsKateMatrikula ; cIbilgailuMota : char ; rdDataUnea : trdNoiz ; rAldiunekoAbiadura : real ; end ; procedure IbilgailuarenDatuakJaso( var rdIbilgailua: trdIbilgailua) ; var iZenbat, iAusazkoa, iKont, k : integer ; sMatrikula, sMatrikulaZifra : tsKateMatrikula ; begin randomize ; iZenbat := 15 + random( 16 ) ; for iKont:= 1 to iZenbat do begin sMatrikula := '' ; for k:= 1 to 4 do begin iAusazkoa := random( 10 ) ; Str(iAusazkoa, sMatrikulaZifra) ; sMatrikula := sMatrikula + sMatrikulaZifra ; end ; iAusazkoa := random( 5 ) ; case iAusazkoa of 0 : rdIbilgailua . sMatrikula := sMatrikula + ' KHS' ; 1 : rdIbilgailua . sMatrikula := sMatrikula + ' BPK' ; 2 : rdIbilgailua . sMatrikula := sMatrikula + ' KKK' ; 3 : rdIbilgailua . sMatrikula := sMatrikula + ' XYZ' ; 4 : rdIbilgailua . sMatrikula := sMatrikula + ' KGB' ; end ; iAusazkoa := random( 4 ) ; case iAusazkoa of 0 : rdIbilgailua . cIbilgailuMota := 'A' ; 1 : rdIbilgailua . cIbilgailuMota := 'B' ; 2 : rdIbilgailua . cIbilgailuMota := 'C' ; 3 : rdIbilgailua . cIbilgailuMota := 'D' ; end ; rdIbilgailua . rdDataUnea . Eguna[ 1 ] := 2021 ; (* 2021-01-01 eta 2021-12-28 artean *) rdIbilgailua . rdDataUnea . Eguna[ 2 ] := 1 + random( 12 ) ; rdIbilgailua . rdDataUnea . Eguna[ 3 ] := 1 + random( 27 ) ; rdIbilgailua . rdDataUnea . Ordua[ 1 ] := 13 ; (* 13:05:00 eta 13:15:59 artean *) rdIbilgailua . rdDataUnea . Ordua[ 2 ] := 5 + random( 11 ) ; rdIbilgailua . rdDataUnea . Ordua[ 3 ] := random( 60 ) ; rdIbilgailua . rAldiunekoAbiadura := 50 + random( 131 ) ; (* 50.0 eta 180.0 artean *) end ; end ; procedure IbilgailuarenDatuakErakutsi( const rdIbilgailua: trdIbilgailua) ; begin writeln ( 'Matrikula: ' : 20 , rdIbilgailua . sMatrikula) ; writeln ( 'Mota: ' : 20 , rdIbilgailua . cIbilgailuMota) ; write ( 'Data: ' : 20 ) ; write (rdIbilgailua . rdDataUnea . Eguna[ 1 ], '-' ) ; if rdIbilgailua . rdDataUnea . Eguna[ 2 ] >= 10 then write (rdIbilgailua . rdDataUnea . Eguna[ 2 ], '-' ) else write ( '0' , rdIbilgailua . rdDataUnea . Eguna[ 2 ], '-' ) ; if rdIbilgailua . rdDataUnea . Eguna[ 3 ] >= 10 then writeln (rdIbilgailua . rdDataUnea . Eguna[ 3 ]) else writeln ( '0' , rdIbilgailua . rdDataUnea . Eguna[ 3 ]) ; write ( 'Ordua: ' : 20 ) ; write (rdIbilgailua . rdDataUnea . Ordua[ 1 ], ':' ) ; if rdIbilgailua . rdDataUnea . Ordua[ 2 ] >= 10 then write (rdIbilgailua . rdDataUnea . Ordua[ 2 ], ':' ) else write ( '0' , rdIbilgailua . rdDataUnea . Ordua[ 2 ], ':' ) ; if rdIbilgailua . rdDataUnea . Ordua[ 3 ] >= 10 then writeln (rdIbilgailua . rdDataUnea . Ordua[ 3 ]) else writeln ( '0' , rdIbilgailua . rdDataUnea . Ordua[ 3 ]) ; writeln ( 'Abiadura: ' : 20 , rdIbilgailua . rAldiunekoAbiadura: 6 : 2 ) ; end ; (* ---------------------- PROGRAMA NAGUSIA ---------------------- *) var rdIbilgailua: trdIbilgailua ; begin writeln ; writeln ; writeln ; writeln ( ' Ibilgailuaren datuak eskuratzen... ' ) ; IbilgailuarenDatuakJaso(rdIbilgailua) ; writeln ; writeln ; writeln ( ' Hona hemen ibilgailuaren datuak:' ) ; IbilgailuarenDatuakErakutsi(rdIbilgailua) ; writeln ; writeln ; readln ; end . |
Programaren balizko exekuzio bat hurrrengo irudian erakusten da:
![]() |
Erregistroa itzultzen duen funtziorik ez dugu programatuko, gauza bera gertatzen da arrayekin (21. Ariketa: zerrendak (IV)) |
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.