AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Erstellung einer Funktion

Ein Thema von Mo53 · begonnen am 3. Jun 2021 · letzter Beitrag vom 10. Jun 2021
Antwort Antwort
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.111 Beiträge
 
Delphi XE2 Professional
 
#1

AW: Erstellung einer Funktion

  Alt 7. Jun 2021, 01:09
Was ist jetzt bitteschön die Aufgabenstellung und welche Syntaxelemente wurden bisher im Lehrstoff vermittelt und welche Syntaxelemente dürfen für die Lösung der Aufgabe verwendet werden?
Es sind verschiedene Prozeduren und Funktionen samt zugehörigen Testfällen zu erstellen, die mit Strings arbeiten. Diese sollen sich wo immer möglich auch gegenseitig aufrufen, um den zu erstellenden Code kurz zu halten (Codeverdopplung ist zu vermeiden!).
Beachtet bei der Entwicklung die vorgesehene Reihenfolge (s.u.): Erstellt ERST die Testfälle und DANN die eigentlichen Funktionen und Prozeduren! Somit macht Ihr Euch rechtzeitig vorab Gedanken, was genau eine Funktion/Prozedur können soll und schreibt nicht unnötig viel Quellcode.

Zusätzlich zum Hauptprogramm sind mehrere Prozeduren und Funktionen zu erstellen

Eine davon ist

''function longestNumber(s : string) : word;
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.
Hinweis: Die längste Ziffernfolge muß nicht unbedingt die größte Zahl in s sein! Eine so gefundene Ziffernfolge darf auch mit einer oder mehreren '0' beginnen.''

bei der ich Probleme habe, das restliche Programm und die restlichen sechs Funktionen/Prozeduren sind fertig.

Arrays dürfen nicht verwendet werden und die vorgegebene Funktion ''function longestNumber(s : string) : word'' darf nicht verändert werden also der Datentyp word muss word bleiben.
Ansonsten ist es uns überlassen was wir verwenden.

Die beiden in #38 gezeigten Funktionen machen genau das, geben also die Länge der längsten Ziffernfolge zurück.
Also nimm eine der beiden Funktionen (besser die untere), ändere den Namen auf "longestNumber", beim Parameter entferne das "const" und ändere das Funktionsergebnis auf "Word".
Stellt sich mir die Frage, was passiert, wenn du einen String übergibst, bei dem die längste Ziffernfolge mehr als 65535 Ziffern hat.
Und so etwas im Fach Informatik.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.493 Beiträge
 
Delphi 12 Athens
 
#2

AW: Erstellung einer Funktion

  Alt 7. Jun 2021, 14:55
Noch eine Variante zur Denksportaufgabe:
Delphi-Quellcode:
function longestNumber(s : string) : word;
var
  L1, L2, N: Word;
  c: Char;
  i: Integer;
begin
  Result := 0;
  L1 := 0;
  L2 := 0;
  N := 0;

  for c in s do
  begin
    {Zeichen in Ziffern-Wert umwandeln}
    i := Ord(c) - Ord('0');
    if (i >= 0) and (i <= 9) then
    begin
      {c enthält eine Ziffer, an dieser Stelle eventuell Ergenisüberlauf prüfen}
      N := N * 10 + i;
      L2 := L2 + 1;
      {Länge des Zwischenergebnis vergleichen und eventuell als Endergebnis übernehmen}
      if L2 > L1 then
      begin
        Result := N;
        L1 := L2;
      end;
    end
    else
    begin
      {c enthält keine Ziffer}
      N := 0;
      L2 := 0;
    end;
  end;
end;
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.598 Beiträge
 
Delphi 7 Professional
 
#3

AW: Erstellung einer Funktion

  Alt 7. Jun 2021, 16:11
Stellt sich mir die Frage, was passiert, wenn du einen String übergibst, bei dem die längste Ziffernfolge mehr als 65535 Ziffern hat.
Und so etwas im Fach Informatik.
Es geht aber darum den nummerischen Wert der längsten Ziffernfolge in einem beliebig langen String zurückzugeben. Und da scheitern wir dann bei dem Rückgabewert 0 für keine Ziffernfolge enthalten und der nummerische Wert der längsten Ziffernfolge ist gleich 0. Das nächste Problem wäre dann noch, das Word bei Werten über 65535 nicht mehr unbedingt was verwertbares zurückgibt

Und: Aus meine Zeit, als es ums Programmierenlernen ging, war die Korrektheit der Ergebnisse nicht so wichtig. Unsere Programme wurden nicht mal kompiliert. Es ging darum zu lernen, wie man an eine Problemlösung herangeht. Und ein mögliches Ergebnis konnte durchaus auch sein: Die gestellte Aufgabe ist, unter vollständiger Beachtung der Vorgaben, nicht zu lösen.

Als Informatiker muss man eben auch sowas erkennen können. Und auch das will gelernt sein.

Und deshalb auch:
Und so etwas im Fach Informatik.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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