While lus werkt niet goed

Status
Niet open voor verdere reacties.

kezmaster

Gebruiker
Lid geworden
19 okt 2004
Berichten
13
Ik heb de volgende functie:

function RPad(const s:string ; n:Integer ; kar:char):string;
var
str:=s;
i:Integer;

begin
i := Length(str);

while i <= n
Insert(kar,str,i);

Result:=str;

end;

Het is de bedoeling dat een woord(s) wordt aangevuld met karakters(kar) tot een bepaald getal is bereikt (n).
 
Je zegt :
Ik heb de volgende functie:

function RPad(const s:string ; n:Integer ; kar:char):string;
var
str:=s; moet zijn s:string;
i:Integer;

begin
i := Length(str);

while i <= n
Insert(kar,str,i);
s:= s+kar

Result:=str;

end;

Het is de bedoeling dat een woord(s) wordt aangevuld met karakters(kar) tot een bepaald getal is bereikt (n).


Zou dit niet beter zijn?
function RPad(const s:string ; n:Integer ; kar:char):string;
var
s:string;
i:Integer;
begin
i := Length(s);
if i < n then begin
s:= s+kar;
end;
end;

Volgens mij is het toch de bedoeling dat je deze functie
aanroept vanuit een andere procedure?
waarom een functie apart en niet rechtstreeks kontroleren in je invoerveld?
of van waar komen de karakters?
is dat niet simpelder?:8-0:
Ik heb ook mijn twijfels over de juistheid van de functie hoor, je geeft parameters mee dus moet je die niet opnieuw gaan initialiseren denk ik en moet je de parameters ook niet met een return terug meegeven?
weet het niet van buiten zal eens in mijn zelfgemaakte
procedures moet gaan kijken als je er niet genoeg aan hebt?
 
Je hoeft de parameters niet opnieuw te initialiseren, dit zijn gewoon variabelen die aan de functie worden meegegeven wanneer deze wordt uitgevoerd. Een correcte implementatie van jouw functie zou zijn:

function RPad(s:String ; n:Integer ; kar:Char): String;
var
i: Integer;
begin
i := Length(s);

while(i < n) do
begin
s := s + kar;
inc(i); // Om een oneindige loop te voorkomen ;)
end;

Result := s;
end;

De uitkomst hiervan is dat het woord s (Dit mag geen const zijn anders kun je er geen karakters aan toevoegen) n keer wordt aangevuld met het karakter kar. ik hoop dat dat is wat je wilde bereiken :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan