2023(e)ko martxoaren 10(a), ostirala

8. astea | kate bat prozesatzen (I)




Hurrengo adibidean kate bakar bat prozesatzen da:


Kateen azpiprogramak: length()
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
(*
   Esaldi bat teklatuz irakurri ondoren, esaldi berberan edukia aldatu
   karaktereen aldaketa honelaxe izango da:
 
   - Alfabetoko bokal bat bada, letra larriz jarri bokal hori.
   - Alfabetoko kontsonante bat bada, letra xehez jarri kontsonante hori.
   - Beste edozein karaktere bada, ez aldatu.
*)
 
program KateaKarakterekaProzesatzenDuenPrograma ;
const
   iMAX = 35 ;
type
   tsKatea = string[iMAX] ;
  
  
function fnboBokalaDa(cLetra: char): boolean ;
begin
   case cLetra of
      'A', 'E', 'I', 'O', 'U': fnboBokalaDa := TRUE ;
      'a', 'e', 'i', 'o', 'u': fnboBokalaDa := TRUE ;            
      else fnboBokalaDa := FALSE ;                             
   end ;
end ;
 
 
{-------------------------------Programa Nagusia---------------------------}
var
   sEsaldia: tsKatea ;
   iLuzera, k: integer ;
begin
   { Karaktere-katea oso-osorik landu behar da. Adibidez, }
   { karaktere-katea irakurri edo idatzi. Karaktere-katea }
   { osoki lantzean 0 posizioa automatikoki berrizten da. }
   write('Esaldi bat idatzi): ') ;
   readln(sEsaldia) ;
   writeln('Esaldia hau da:  ///', sEsaldia, '///') ;
   writeln ;
    
   iLuzera := length(sEsaldia) ;
   writeln('///', sEsaldia, '/// esaldiaren luzera = ', iLuzera) ; 
    
   { Katearen karaktere bat aldatzen bada, kateak duen 0 posizioaren }
   { edukia ez da eguneratzen, kasu honetan hori oso ondo datorkigu. }
   for k:=1 to length(sEsaldia) do
   begin
      if fnboBokalaDa(sEsaldia[k]) then
         sEsaldia[k] := upcase(sEsaldia[k])
      else
         if (sEsaldia[k] >= 'B') and (sEsaldia[k] <= 'Z') then  
            sEsaldia[k] := lowercase(sEsaldia[k])
   end ;
    
   iLuzera := length(sEsaldia) ;
   writeln('///', sEsaldia, '/// esaldi berriaren luzera = ', iLuzera) ;
   writeln
            
   readln ;
end.














Hurrengo adibidean ere kate bakar bat prozesatzen da:


Kateen azpiprogramak: length()
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
{   Hasierako katearen itxura:
      - Izena (adibidez: Mari)
    
   Bukaerako katearen itxura:
      - Izena (MariTXU)
}
program KateaKarakterekaProzesatzenDuenPrograma ;
uses
   crt ;
const
   iMAX = 35 ;
type
   tsKatea = string[iMAX] ;
 
var
   sIzena: tsKatea ;
   iLuzera: integer ;
begin
   clrscr ;
    
   { Karaktere-katea oso-osorik landu behar da. Adibidez, }
   { karaktere-katea irakurri edo idatzi. Karaktere-katea }
   { osoki lantzean 0 posizioa automatikoki berrizten da. }
   write('Izen bat idatzi (MARI adibidez): ') ;
   readln(sIzena) ;
   writeln('Izena hau da:  ///', sIzena, '///') ;
   iLuzera := length(sIzena) ;
   writeln('///', sIzena, '/// izenaren luzera = ', iLuzera) ; 
   writeln ;
 
   if length(sIzena)+length('TXU') < iMAX then
   begin
      { Katearen karaktere bat aldatzen bada, kateak duen 0 posizioaren }
      { edukia ez da automatikoki eguneratzen, eskuz egin beharko da.   }
      writeln('Izenari TXU txikigarria gehitu (T, X eta U karaktereak esleituz)') ;
      sIzena[iLuzera+1] := 'T' ;
      sIzena[iLuzera+2] := 'X' ;
      sIzena[iLuzera+3] := 'U' ;
      writeln('Izen berria:  ///', sIzena, '///') ;
      iLuzera := length(sIzena) ;
      writeln('///', sIzena, '/// izen berriaren luzera = ', iLuzera) ;
      writeln
          
      { Karaktere-katea oso-osorik landu behar da. Esate }
      { baterako kateari beste kate bat gehituz, orduan  }
      { katearen 0 posizioa automatikoki eguneratzen da. }
      writeln('Izenari TXU txikigarria gehitu (kateen arteko kateaketa burutuz)') ;
      sIzena := sIzena + 'TXU' ;
      writeln('Izen berria:  ///', sIzena, '///') ;
      iLuzera := length(sIzena) ;
      writeln('///', sIzena, '/// izen berriaren luzera = ', iLuzera) ;
      writeln ;   
   end
   else
      writeln(sIzena, ' datuari ezin zaio TXU atzizkia gehitu') ;
       
   repeat until keypressed ;
end.







 

iruzkinik ez:

Argitaratu iruzkina