![]() |
Maiztasuna: Alfabeto larrien letrak zenbat aldiz agertzen diren testu batean |
1 2 3 4 5 | const iZENBATIKASLE = 10 ; type tsKate49 = string [ 49 ]; tasIzenenZerrenda = array [ 1.. iZENBATIKASLE] of tsKate49; |
1 2 | type taiAlfabetoMaizta = array [ 'A' .. 'Z' ] of integer ; |
Adibide honetan testua konstantea da, izen abizenen zerrenda konstante bat da. Alfabetoko letren maiztasuna kalkulatzeko horrela egingo genuke:
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 | program AlfabetokoLetrenMaiztasuna; uses crt; const iZENBATIKASLE = 10 ; type taiAlfabetoMaizta = array [ 'A' .. 'Z' ] of integer ; tsKate49 = string [ 49 ]; tasIzenenZerrenda = array [ 1.. iZENBATIKASLE] of tsKate49; const asZERRENDA: tasIzenenZerrenda = ( 'AGIRRE ROMERO, UNAI' , // 01 'ANGULEMA CARAZO, JON ANDER' , // 02 'BIKARREGI IGLESIAS, JULEN' , // 03 'CANO RUIZ DE HEREDIA, JULIAN' , // 04 'CORRAL EGIA, JOSEBA ANDONI' , // 05 'DIAZ DE ULZURRUN, ROY, LEONOR' , // 06 'EGIGUREN MARKINEZ, IRUNE' , // 07 'ERKIAGA ANDONEGI, IKER' , // 08 'FERNANDEZ FEITO, FELIX' , // 09 'GARTZIA DE ALZA GIL, KATALIN' ); // 10 { ikasleen izena array konstante batean daude, bere edukia pantailaratu } { parametrorik gabe, asZERRENDA eta iZENBATIKASLE konstante direlako } procedure TestuaIkusi; var k: integer ; begin for k:= 1 to iZENBATIKASLE do begin writeln (k: 20 , '. ikaslea: ' , asZERRENDA[k]); end ; end ; { asZERRENDA eta iZENBATIKASLE konstante direlako ez dira parametro } { luzerarik ez aiAlfabetoMaizta arrayarentzat bete-beterik dagoelako } procedure LetrenZenbaketakEgin( var aiAlfabetoMaizta: taiAlfabetoMaizta); var cKontLetr: char ; iKontIkas: integer ; iKont: integer ; cLetra: char ; begin (* hasiera batean letra guztien maiztasuna 0 da *) for cKontLetr:= 'A' to 'Z' do aiAlfabetoMaizta[cKontLetr] := 0 ; (* ikasle guztiak arakatu *) for iKontIkas:= 1 to iZENBATIKASLE do begin (* ikasle baten letrak prozesatu *) for iKont:= 1 to length(asZERRENDA[iKontIkas]) do begin cLetra := asZERRENDA[iKontIkas][iKont]; //aiAlfabetoMaizta[asZERRENDA[iKontIkas][iKont]] := aiAlfabetoMaizta[asZERRENDA[iKontIkas][iKont]] + 1; aiAlfabetoMaizta[cLetra] := aiAlfabetoMaizta[cLetra] + 1 ; end ; end ; end ; { luzerarik ez aiAlfabetoMaizta arrayarentzat bete-beterik dagoelako, A-tik Z-tara } function fnrBatezBestekoaKalkulatu( const aiAlfabetoMaizta: taiAlfabetoMaizta): real ; var cKontLetr: char ; iMetatua: integer ; iZenbatLetra: integer ; begin iMetatua := 0 ; for cKontLetr:= 'A' to 'Z' do iMetatua := iMetatua + aiAlfabetoMaizta[cKontLetr]; iZenbatLetra := ord( 'Z' ) - ord( 'A' ) + 1 ; fnrBatezBestekoaKalkulatu := 1.0 *iMetatua/iZenbatLetra; end ; { luzerarik ez aiAlfabetoMaizta arrayarentzat A-tik Z-tara doalako } procedure MaiztasunakIkusi( const aiAlfabetoMaizta: taiAlfabetoMaizta); var cKont: char ; begin for cKont:= 'A' to 'Z' do begin writeln ( '"' : 20 , cKont, '" ===> ' , aiAlfabetoMaizta[cKont]: 3 , ' aldiz' ); end ; end ; { ---------------------------------- Programa Nagusia ---------------------------------- } var aiAlfabetoMaizta: taiAlfabetoMaizta; rBBA: real ; begin clrscr; writeln ( 'Zeintzuk dira letra guzti hauen maiztasuna?' ); writeln ; TestuaIkusi; { parametrorik ez, izenen arraya konstante delako } writeln ; LetrenZenbaketakEgin(aiAlfabetoMaizta); { parametrorik bakarra, izenen arraya konstante delako } MaiztasunakIkusi(aiAlfabetoMaizta); { luzerarik ez, arraya beterik dagoelako (26 letra) } writeln ; rBBA := fnrBatezBestekoaKalkulatu(aiAlfabetoMaizta); { luzerarik ez, alfabeto osoa } writeln ( 'Letren agerpenen atezbesteko aritmetikoa = ' , rBBA: 0 : 2 , ' aldiz' ); repeat until keypressed; end . |
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.