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:  



{
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