ZER DAKIDAN: Funtzio batek sarreraren bat hartzen du eta emaitza bakar bat itzultzen du. Dagoeneko zenbakien funtzio estandarrak erabili ditut. ZER IKASIKO DUDAN: CHAR datu-mota, eta CHAR datu-motarekin lotutako funtzio estandar batzuk:
|
A eta Z arteko letra maiuskula bat gure erreferentzia da. Prozesu errepikakor bat hasi eta teklatuaren bitartez letra bat irakurri, ereferentziaren eta irakurriko letraren arteko distantzia (zenbaki bat) kalkulatu balio minimoa gordez. Prozesu errepikakorretik irteteko erreferentzia den letra teklatuz irakurri. Programa amaitu aurretik pantailaratu letrarik hurbilena eta bere distantzia erreferentziarekiko.
Algoritmoa:
- Erreferentzia teklatutik irakurri, cErreferentzia aldagaiari balioa eman (jakinik letra maiuskula bat izan beharko dela)
- Hasieraketak. Bi izan daitezke, alde batetik distantzia minimoa gordeko duen iMinimoa zenbaki osoa (minimoa bilatzen ari garelako hasieran kopurua handi bat jarri beharko da); bigarren hasieraketa letrarik hurbilena gordetzeko cHurbilena aldagaia izango da, baina aurreko aldagaiarekin lotuta dagoenez bere hasieraketa ez da derrigorrezkoa
- Begiztaren iterazio bakoitzeko: cLetra aldagaiari balioa teklatuz eman, eta erreferentziarekiko iDistantzia aldagaiari distantzia kalkulatu ord funtzio estandarra aplikatuz, iDistantzia aldagaiaren balioa eta iMinimoa aldagaiaren balioa alderatu erabakiak hartzeko (emaitzak zehazteko, hots, minimoak zehazteko)
- Prozesu errepikakorretik irten cErreferentzia aldagaiaren balioa eta cLetra aldagaiaren balioa bat bera denean, baina kontuz, irtetean haien arteko diztantzia 0 izango da eta horrek minimoaren kalkuluarengan eragina du
- cLetra aldagaiaren balioa eta iMinimoa aldagaiaren balioa pantailaratu
ESKATZEN DEN PROGRAMA
Programa honek goiko algoritmoa aplikatzen du:
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 | { Erreferentzia bat emanik, letra sorta bateko letrarik hurbilena. } program Ariketa_11 ; uses crt ; var cErreferentzia, cLetra, cItxoin, cHurbilena : char ; iDistantzia, iMinimoa : integer ; begin clrscr ; repeat write ( 'Erreferentzia izango den A..Z alfabetoko letra eman: ' ) ; readln(cErreferentzia) ; until (cErreferentzia >= 'A' ) and (cErreferentzia <= 'Z' ) ; writeln ; writeln ( 'Orain prozesu errepikakor batean sartuko gara, begizta edo itzuli bakoitzean' ) ; writeln ( 'letra majuskula bat sartuz eta erreferentziarekiko distantzia kalkulatuz.' ) ; writeln ; iMinimoa := ord( 'Z' ) - ord( 'A' ) + 1 ; (* alfabetoaren maximoa baino 1 gehiago *) cHurbilena := cErreferentzia ; (* hasieraketa hau ez da derrigorrezkoa *) repeat repeat write ( 'A..Z alfabetoko letra eman (bukatzeko ' , cErreferentzia, ' eman): ' ) ; readln(cLetra) ; until (cLetra >= 'A' ) and (cLetra <= 'Z' ) ; if cLetra <> cErreferentzia then begin iDistantzia := abs (ord(cErreferentzia) - ord (cLetra)) ; writeln (cLetra, ' eta ' , cErreferentzia, ' arteko aldea ' , iDistantzia, ' da' ) ; writeln ; if iDistantzia < iMinimoa then begin cHurbilena := cLetra ; iMinimoa := iDistantzia ; end ; end ; until cLetra = cErreferentzia ; writeln ( 'Letrarik hurbilena: ' , cHurbilena) ; writeln (cHurbilena, ' eta ' , cErreferentzia, ' arteko aldea ' , iMinimoa, ' da' ) ; cItxoin := readkey ; write (cItxoin) ; end . |
|
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.