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 134 135 136 137 138 139 140 141 142 | { Datua den karaktere-katearen ezaugarriak: - Datuaren luzera maximoa 30 karaktere - Datuaren hasieran izen bat dago, adibidez Eleonor izena - Datuaren erdian nota bat dago, adibidez +7.2 nota edo -6.8 nota (zeinua, lehen zifra, puntua eta dezimal bakarra) - Datuaren amaieran abizena dago, adibidez Iza abizena Zenbat ikasle diren teklatuaren bitartez harturik, ikaslearen datuak hartu eta egokitasuna frogatu ondoren nota eskuratu, nota guztien batezbestekoa lortzeko. Eleonor+7.2Iza Paul-6.8Salazar Amagoia+5.5Lakarra Ruy-4.9Ruiz (+7.2 -6.8 +5.5 -4.9) / 4 = 0.25 Espresuki kontrakorik esaten ez bada, gure ariketetan datuak beti egokiak direla suposatu ahalko dugu. Adibide hau salbuespen bat litzateke datuen zuzuentasuna begiratzen delako, hots, datu guztiak ea bat datozen aurreikusitako formatuarekin. } program KatearenEgokitasunaKontrolatu ; type tKate30 = string [ 30 ] ; function fnboDatuaEgokiaDa(sIkaslea: tkate30): boolean ; var iZeinuaNon, iErroreaNon: integer ; sNota: tkate30 ; rNota: real ; begin fnboDatuaEgokiaDa := TRUE ; if (pos( '+' , sIkaslea) = 0 ) and (pos( '-' , sIkaslea) = 0 ) then begin writeln ( 'Zeinua falta da!!!' ) ; fnboDatuaEgokiaDa := FALSE ; end ; if (pos( '+' , sIkaslea) <> 0 ) or (pos( '-' , sIkaslea) <> 0 ) then begin if pos( '+' , sIkaslea) = 0 then iZeinuaNon := pos( '-' , sIkaslea) else iZeinuaNon := pos( '+' , sIkaslea) ; sNota := copy(sIkaslea, iZeinuaNon, 4 ) ; writeln ( 'sNota = |' , sNota, '|' ) ; val (sNota, rNota, iErroreaNon) ; if iErroreaNon <> 0 then begin writeln ( 'Zifrak edo puntua oker, notaren ' , iErroreaNon, '. posizioan errorea dago!!!' ) ; fnboDatuaEgokiaDa := FALSE ; end else (* zeinua eta nota ondo daudenean *) begin if iZeinuaNon = 1 then begin writeln ( 'Izena falta da!!!' ) ; fnboDatuaEgokiaDa := FALSE ; end ; if iZeinuaNon+ 3 = length(sIkaslea) then begin writeln ( 'Abizena falta da!!!' ) ; fnboDatuaEgokiaDa := FALSE ; end ; end ; end ; end ; procedure DatuakBakandu(sIkaslea: tKate30; var sIzena, sAbizena, sNota: tKate30) ; var iBanatzaileaNon: integer ; begin iBanatzaileaNon := pos( '+' , sIkaslea) ; if iBanatzaileaNon = 0 then iBanatzaileaNon := pos( '-' , sIkaslea) ; writeln ( 'Zeinuaren posizioa ' , iBanatzaileaNon, ' da' ) ; sIzena := copy(sIkaslea, 1 , iBanatzaileaNon- 1 ) ; sNota := copy(sIkaslea, iBanatzaileaNon, 4 ) ; sAbizena := copy(sIkaslea, iBanatzaileaNon+ 4 , length(sIkaslea)-iBanatzaileaNon+ 4 ) ; writeln ( 'sIzena = ' , sIzena) ; writeln ( 'sNota = ' , sNota) ; writeln ( 'sAbizena = ' , sAbizena) ; end ; {-------------------------Programa Nagusia-------------------------} var sIkaslea, sNota, sIzena, sAbizena: tKate30 ; rNota, rBatukaria: real ; iZenbatIkasle, k: integer ; boDatuaEgokiaDa: boolean ; begin writeln ( '//////////////////////////////////////' ) ; writeln ; repeat write ( 'Zenbat ikasle izango dira (adibidez 4): ' ) ; readln(iZenbatIkasle) ; until iZenbatIkasle > 0 ; writeln ; rBatukaria := 0.0 ; for k:= 1 to iZenbatIkasle do begin repeat write (k, '. ikaslearen datuak (adibidez: Ruy+7.2Ruiz): ' ) ; readln(sIkaslea) ; boDatuaEgokiaDa := fnboDatuaEgokiaDa(sIkaslea) ; if not boDatuaEgokiaDa then begin writeln ( 'Datua berriro errepikatu!!!' ) ; writeln ; end ; until boDatuaEgokiaDa ; writeln ; writeln ( 'datua ==>' , sIkaslea, '<==' ) ; DatuakBakandu(sIkaslea, sIzena, sAbizena, sNota) ; writeln (k, '. ikaslea: |' , sIzena, '| |' , sAbizena, '| |' , sNota, '|' ) ; writeln ; val (sNota, rNota) ; rBatukaria := rBatukaria + rNota ; end ; writeln ; writeln ( 'Batezbestekoa = ' , rBatukaria/iZenbatIkasle: 0 : 3 ) ; writeln ; writeln ( '//////////////////////////////////////' ) ; readln ; end . |
2024(e)ko martxoaren 14(a), osteguna
8. astea | katearen egokitasuna kontrolatu
Harpidetu honetara:
Argitaratu iruzkinak (Atom)
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.