Hurrengo adibidean kate bakar bat prozesatzen da:
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 | { Hasierako katearen itxura: - Izena eta abizena. - Izena eta abizena letra larriz hasten dira. - Adibidez: IbanIbabe Bukaerako katearen itxura: - Izena eta abizena. - Izena eta abizena letra larriz hasten dira. - Izena eta abizenaren artean 'txu' txikigarria. - Adibidez: IbantxuIbabe } program Izena_txu_Abizena ; const iMAX = 35 ; type tsKatea = string [iMAX] ; function fniAbizenaNonHastenDa(sIzenAbizena: tsKatea) : integer ; var iKont: integer ; begin iKont := 2 ; (* larria delako, ez konputatu izenaren lehen karakterea *) while sIzenAbizena[iKont] > 'Z' do iKont := iKont + 1 ; fniAbizenaNonHastenDa := iKont ; end ; var sIzenAbizena: tsKatea ; iAbizenaNon: integer ; begin writeln ( '//////////////////////////////////////' ) ; writeln ; repeat write ( 'Izena eta abizena eman (adibidez, IbanIbabe): ' ) ; readln(sIzenAbizena) ; if length(sIzenAbizena) > iMAX - length( 'txu' ) then writeln ( 'Datu horientzat ez dago toki nahikorik memorian!!!' ) ; until length(sIzenAbizena) <= iMAX - length( 'txu' ) ; writeln ; writeln ( 'Datua hauxe da: ///' , sIzenAbizena, '///' ) ; writeln ; { Abizenaren lehen karakterea letra larria da } iAbizenaNon := fniAbizenaNonHastenDa(sIzenAbizena) ; insert( 'txu' , sIzenAbizena, iAbizenaNon) ; writeln ( 'Emaitza hau da: ///' , sIzenAbizena, '///' ) ; writeln ; writeln ( '//////////////////////////////////////' ) ; readln ; end . |
Jarraian ematen den adibidean, kate bat hainbat aldiz prozesatzen da. Kateen kopurua ezaguna dela, hainbat kateren zatia eskuratu eta zenbaki bihurtu (ikusi ere
SarrerakoDatuakKontrolatuz.pas
):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 | { 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, notak eskuratu eta nota guztien batezbestekoa lortu. Eleonor+7.2Iza Peru-6.8Salazar Amagoia+5.5Lakarra Ruy-4.9Ruiz (+7.2 -6.8 +5.5 -4.9) / 4 = 0.25 } program HainbatNotenBatezbestekoa ; type tKate30 = string [ 30 ] ; procedure DatuakBakandu(sIkaslea: tKate30; var sIzena, sAbizena, sNota: tKate30) ; var iBanatzaileaNon : integer ; begin iBanatzaileaNon := pos( '+' , sIkaslea) ; if iBanatzaileaNon = 0 then iBanatzaileaNon := pos( '-' , sIkaslea) ; writeln ( 'Banatzailearen 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, iErroreaNon : integer ; begin writeln ( '//////////////////////////////////////' ) ; writeln ; repeat write ( 'Zenbat ikasle izango dira (adibidez 4): ' ) ; readln(iZenbatIkasle) ; until iZenbatIkasle > 0 ; rBatukaria := 0.0 ; for k:= 1 to iZenbatIkasle do begin writeln ; write (k, '. ikaslearen datuak (adibidez: Ruy+7.2Ruiz): ' ) ; readln(sIkaslea) ; writeln ; writeln ( 'datua ==>' , sIkaslea, '<==' ) ; DatuakBakandu(sIkaslea, sIzena, sAbizena, sNota) ; writeln (k, '. ikaslea: |' , sIzena, '| |' , sAbizena, '| |' , sNota, '|' ) ; val (sNota, rNota, iErroreaNon) ; writeln (k, '. ikaslea: rNota = ' , rNota: 0 : 1 , ' iErroreaNon = ' , iErroreaNon) ; rBatukaria := rBatukaria + rNota ; end ; writeln ; writeln ( 'Batezbestekoa = ' , rBatukaria/iZenbatIkasle: 0 : 3 ) ; writeln ; writeln ( '//////////////////////////////////////' ) ; readln ; end . |
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.