2023(e)ko martxoaren 15(a), asteazkena

8. astea | katean toki nahikorik ez

Karaktere-kate baten luzera fisikoa (luzera maximoa) mugatuta dago eta hori gainditzean ez da errorerik gertatzen ez exekuzio-denboran eta are gutxiago konpilazio-denboran. Muga gainditzean gainerako karaktereak ez dira gordetzen. Adibidez, hori gerta daiteke insert() prozedura aplikatzean:  



Kateen azpiprogramak: length() eta insert()
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
{
   Hasierako katearen itxura:
      - Izena eta abizena
      - Izena eta abizena letra larriz hasten dira
      - Adibidez: IbanIbabe
    
   Bukaerako katearen itxura:
      - Izena eta abizena
      - Izena eta abizena letra larriz hasten dira
      - Izena eta abizenaren artean 'txu' txikigarria
      - Adibidez: IbantxuIbabe
}
 
program txu_Txikigarria;
uses
   crt;
const
   iMAX = 15;   { sarritan txikiegia gerta daiteke }
type
   tsKatea = string[iMAX];
 
 
function fniAbizenaNonHastenDa(sIzenAbizena: tsKatea) : integer;
var
   iKont: integer;
begin
   iKont := 2;   (* larria delako, ez konputatu izenaren lehen karakterea *)
   while sIzenAbizena[iKont] > 'Z' do
      iKont := iKont + 1;
       
   fniAbizenaNonHastenDa := iKont;  
end;  
 
  
var
   sIzenAbizena: tsKatea;
   iAbizenaNon: integer;
begin
   clrscr;
   writeln('//////////////////////////////////////');
   writeln;
   repeat
      write('Izena eta abizena eman (adibidez, IbanIbabe): ');
      readln(sIzenAbizena);
      if length(sIzenAbizena) > iMAX - length('txu') then
         writeln('Datu horientzat ez dago toki nahikorik memorian!!!');
   until length(sIzenAbizena) <= iMAX - length('txu');
   writeln;
    
   writeln('  Datua hauxe da:  ///', sIzenAbizena, '///');
   writeln('Luzera efektiboa:  ///123456789012345///');
   writeln;
    
   { Abizenaren lehen karakterea letra larria da }
   iAbizenaNon := fniAbizenaNonHastenDa(sIzenAbizena); 
        
   insert('txu', sIzenAbizena, iAbizenaNon);
    
   writeln('  Emaitza hau da:  ///', sIzenAbizena, '///');
   writeln('Luzera efektiboa:  ///123456789012345///');
   writeln;
    
   writeln('//////////////////////////////////////');
   readln;
end.








 

iruzkinik ez:

Argitaratu iruzkina