Hurrengo adibidean kate bakar bat prozesatzen da:
{ 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
):{ 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.