![]() |
AW: Erstellung einer Funktion
@runningsoft @Delphi.Narium Vielen Dank für eure Lösungsvorschläge, try und except, hatten wir noch nicht behandelt in den Vorlsungen deshalb bin ich mir da unsicher ob ich das benutzen darf, ich werde da mal nachfragen:)
|
AW: Erstellung einer Funktion
Eventuell könnte dashier schon reichen, ist aber ungetestet:
Delphi-Quellcode:
function longestNumber(s : string) : byte;
var run, number : byte; begin longestNumber := 0; number := 0; for run := 1 to length(s) do begin case s[run] of '0'..'9' : inc(number); else begin if number > longestNumber then longestNumber := number; number := 0; end; end; end; if number > longestNumber then longestNumber := number; end; |
AW: Erstellung einer Funktion
@Delphi.Narium da wird leider die Fehlermeldung ''nicht genügend wirkliche Parameter angezeigt''
|
AW: Erstellung einer Funktion
An welcher Stelle wird der Fehler angezeigt?
In PascalScript funktioniert diese Variante:
Delphi-Quellcode:
Oder alternativ:
function longestNumber(s : string) : byte;
var run, number : byte; begin Result := 0; number := 0; for run := 1 to length(s) do begin case s[run] of '0'..'9' : number := number + 1; else begin if number > Result then Result := number; number := 0; end; end; end; if number > Result then Result := number; end;
Delphi-Quellcode:
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; |
AW: Erstellung einer Funktion
Zitat:
Ist klar, helfen macht Spass. Aber Hilfe zur Selbsthilfe ist besser. ....und macht übrigens auch Spass. Im Studium habe ich öfter jemandem bei den Projekten geholfen. Leider auch ein paar mal so wie Du jetzt. Allerdings haben wir danach den Quelltext besprochen in der Hoffnung das etwas Verständnis aufkommt :wink: |
AW: Erstellung einer Funktion
Also schauen wir doch mal die Aufgabenstellung an:
„Sucht die längste Ziffernfolge (aus Ziffern von '0' bis '9') im String s. Gibt es mehrere gleich lange, wird davon die erste zurückgegeben. Sind keine Ziffern enthalten, gibt die Funktion den Wert 0 zurück.“ Daraus ergibt sich für mich als erstes: Die Signatur der Funktion ist falsch müsste so aussehen:
Delphi-Quellcode:
Ansonsten wird die Bedingung : „Gibt es mehrere gleich lange, wird davon die erste zurückgegeben“ nicht erfüllt.
function longestNumber(s : string) : string;
Beispiele: Input: „123 1234 12345 “ Result : „12345“ Input: „333 4444 5555 “ Result : „4444“ da erstes Vorkommen Input : „ABCDEF“ : Result 0; Und dann pseudo Code: startfunc Result ‚0‘ tempResult „“ Scheife 1 bis länge Input Prüfe ob Input[schleife] ist eine ZifferJa : hänge input[schleife] an tempresult; Schleifenende Noch einmal prüfen:endfunc |
AW: Erstellung einer Funktion
hallo,
der Fehler duerfte hier auftreten
Delphi-Quellcode:
if number > longestNumber then longestNumber := number;
Gruß |
AW: Erstellung einer Funktion
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. |
AW: Erstellung einer Funktion
Moin...:P
Zitat:
Info: Zum Programmieren, egal welche Sprache, gehört zum Lernen ein Styleguide dazu. :wink: Delphi: ![]() Du machst das schon gut. :zwinker: |
AW: Erstellung einer Funktion
Zitat:
ich würde es so versuchen:
Delphi-Quellcode:
procedure deleteDigits(var s: string);
var run byte; begin for run := length(s) downto 1 do case s[run] of '0'..'9' : delete(s,run,1); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz