Orriak

2017-06-22

bitar-hamartar

Karaktere-kateekin lan eginez; kopuru bat sistema bitarrean emanik, dagokion zenbaki hamartarra lortu nahi da.

Abiapuntuko zenbaki bitarrak alde osoa eta alde dezimala badu, polinomioa aplikatuko zaio baina koefizinteak hauek direla:
  • Alde osoarako: ... , 3, 2, 1, 0
  • Alde dezimalerako: -1, -2, -3, -4, ...

Ariketaren enuntziatu laburra hau da:
  • XXXXXX.YYYYYYYYY formatuko zenbaki bitar bat karaktere-kate bezala teklatuaren bitartez irakurri, eta dagokion zenbaki hamartarraren karaktere-katea lortu.
Enuntziatu horretatik ondokoa ondorioztatzen da:
  • Teklatuz irakurritako sarrerako karaktere-katea XXXXXX.YYYYYYYYY da.
  • Emaitza den zenbaki bitarren karaktere-katearen neurria zehazteko, hau gogoratu:
    • 1 bit, 0 [0] eta 1 [1] artekoak
    • 2 bit, 2 [10] eta 3 [11] artekoak gehi aurreko biak
    • 3 bit, 4 [100] eta 7 [111] artekoak gehi aurreko lauak
    • 4 bit, 8 [1000] eta 15 [1111] artekoak gehi aurreko zortziak
    • 5 bit, 16 [10000] eta 31 [11111] artekoak gehi aurreko hamaseiak
    • 6 bit, 32 [100000] eta 63 [111111] artekoak gehi aurreko guztiak
    • 7 bit, 64 [1000000] eta 127 [1111111] artekoak gehi aurreko guztiak
    • 8 bit, 128 [10000000] eta 255 [11111111] artekoak gehi aurreko guztiak
    • (9 bit), 256 [100000000] eta 511 [111111111] artekoak gehi aurreko guztiak
    • (10 bit), 512 [1000000000] eta 1023 [1111111111] artekoak gehi aurreko guztiak
    • (11 bit), 1024 [10000000000] eta 2047 [11111111111] artekoak gehi aurreko guztiak
  • XXXXXX bitarraren hamartar nagusiena 63 izanik, 2 bitekin nahikoa da.
  • YYYYYYYYY hamartar nagusiena 511 denez, 3 bitekin nahikoa da.
  • Sarrerako-katea: 16 karakterekoa (6 alde osoa, 1 puntua eta 9 alde dezimala).
  • Irteerako-katea: 2+1+3=6 karakterekoa (2 alde osoa, 1 puntua eta 3 alde dezimala).



BitarHamartar_01.pas
Programa honek teklatuaren bitartez jasotzen duen datua karaktere-kate bat da. Datuak baldintza zorrotz hauek bete beharko ditu, eta programak baldintza horiek aztertzen ditu:
  • Alde osoan 6 karaktere izan behar dira.
  • Alde osoaren 6 karaktereak 0 edo/eta 1 zifrak izan behar dira.
  • Alde dezimalean 9 karaktere izan behar dira.
  • Alde dezimalaren 9 karaktereak 0 edo/eta 1 zifrak izan behar dira.
  • Alde osoa eta alde dezimala banatzen duen 7. karakterea puntua izango da.
Hauek dira, adibidez, onartzen diren sarrerak:
    000111.000111000    111111.111000111    100100.100100100


Baldintza guztiak betetzen badira, bihurketa burutzen da bi etapak betez:
  1. Alde osoarekin biderketak egiten dira 2-ren potentziak kalkulatuz (irudian 111111 datuak potentzia hauek erabiliko ditu 25, 24, 23, 22, 21 eta 20).
  2. Alde dezimalarekin biderketak egiten dira ere 2-ren potentziak kalkulatuz (irudian 000000001 datuak potentzia bakar hau erabiliko du 2-9 gainerako koefizienteak zero direlako).
Hauxe da ariketari erantzuten dion BitarHamartar_01.pas iturburu-programa.



BitarHamartar_02.pas
Programa honek teklatuaren bitartez jasotzen duen datua aztertu egiten du:
  • Datuaren karaktereak egokiak diren frogatzen da lehenik, onartzen diren karaktereak zeroak, batekoak eta puntua dira. Karaktere desegokiren bat edo batzuk ematean lehen karaktere desegokiaren berri emango du programak.
  • Datuaren karaktereak egokian badira, karaktereen kopuruak aztertzen dira:
    • Datuaren alde osoak gehienez 6 karaktere izango ditu.
    • Datuaren alde dezimalak gehienez 10 karaktere izango ditu.
  • Punturik ez badago, zenbat karaktere dauden kalkulatzen da eta alde osoaren prozesatzeari ekiten zaio, behar izanez gero datuari hainbat zero aurretik gehituz. 
  • Punturik badago:
    • Alde osoak zenbat karaktere dituen kalkulatzen da eta alde osoaren prozesatzeari ekiten zaio, behar izanez gero hainbat zero aurretik gehituz.
    • Alde dezimalak zenbat karaktere dituen kalkulatzen da eta alde dezimalaren prozesatzeari ekiten zaio, behar izanez gero hainbat zero atzetik gehituz.
Hauek dira, adibidez, onartzen diren sarrerak:
    001.000111000     0.111000111     111000     .111000111
    111000.000111000     111000.     1.000111000     1100



Baldintza guztiak betetzen badira, bihurketa burutzen da bi etapak betez:
  1. Alde osoarekin zatiketak egiten dira bihurketa bitarra burutuz. Baina orain alde osoaren karaktere kopurua kalkulatu beharra dago eta aintzakotzat hartu, ez delako beti 6 izango.
  2. Alde dezimalarekin biderketak egiten dira bihurketa bitarra burutuz. Baina orain alde osoaren karaktere kopurua kalkulatu beharra dago eta aintzakotzat hartu, ez delako beti 3 izango.
Hauxe da ariketari erantzuten dion BitarHamartar_02.pas iturburu-programa.

iruzkinik ez:

Argitaratu iruzkina