Registriert seit: 16. Mai 2021
59 Beiträge
Delphi 10.3 Rio
|
AW: Erstellung einer Funktion
4. Jun 2021, 03:08
Das Programm ist jetzt so gut wie fertig, ist nur noch ein kleines Problem bei der Ausgabe der Prozedur 'deleteDigits', ich habe herausgefunden das es so nicht zulässig ist, bin jedoch nach langem herumexperimentieren immernoch nicht darauf gekommen.
Delphi-Quellcode:
{$APPTYPE CONSOLE}
{$R+,Q+,X-}
uses
System.SysUtils;
var
s : string;
function countDigits(s : string) : byte;
var run , number : byte;
begin
number := 0;
for run := 1 to length(s) do
begin
case s[run] of
' 0'..' 9' : inc(number);
end;
countDigits := number;
end;
end;
function countEvenDigits(s : string) : byte;
var run , number : byte;
begin
number := 0;
for run := 1 to length(s) do
begin
case s[run] of
' 0',' 2',' 4',' 6',' 8' : inc(number);
end;
countEvenDigits := number;
end;
end;
function countOddDigits(s : string) : byte;
var run , number : byte;
begin
number := 0;
for run := 1 to length(s) do
begin
case s[run] of
' 1',' 3',' 5',' 7',' 9' : inc(number);
end;
countOddDigits := number;
end;
end;
function countNonDigits(s : string) : byte;
var run, number : byte;
begin
number := length(s);
for run := 1 to length(s) do
begin
case s[run] of
' 0'..' 9' : dec(number);
end;
countNonDigits := number;
end;
end;
function longestNumber(s : string) : byte;
var run, number, longNum : byte;
begin
longNum := 0;
number := 0;
for run := 1 to length(s) do
begin
case s[run] of
' 0'..' 9' : inc(number);
else
begin
if number > longNum then longNum := number;
number := 0;
end;
end;
end;
if number > longNum then longNum := number;
longestNumber := longNum;
end;
procedure deleteDigits( var s: string);
var
run, number, savedRun, deleted: byte;
endNotFound :boolean;
begin
run := length(s);
savedRun := length(s);
endNotFound := TRUE;
while endNotFound do
begin
repeat
case s[run] of
' 0' .. ' 9': delete(s,run,1);
end;
dec(run);
until run = 0 ;
endNotFound := TRUE;
end;
end;
procedure printInfos(s: string);
begin
writeln(' String: ', s, ' Ziffern: ', countDigits(s), ' Gerade: ',
countEvenDigits(s), ' Ungerade: ', countOddDigits(s), ' Andere: ', countNonDigits(s),
' Längste: ',longestnumber(s),' Ohne: ',deleteDigits(s));
end;
begin
write(' Bitte Satz eingeben: ');
readln(s);
printInfos(s);
readln;
end.
|
|
Zitat
|