2024(e)ko martxoaren 8(a), ostirala

8. astea | kate bat prozesatzen (I)


Hurrengo adibidean kate bakar bat prozesatzen da:
(*
   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_1 ;
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 
         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:
{   Hasierako katearen itxura:
      - Izena (adibidez: Mari)
   
   Bukaerako katearen itxura:
      - Izena (MariTXU)
}
program KateaKarakterekaProzesatzenDuenPrograma_2 ;
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

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.