Advertisement
Guest User

Untitled

a guest
Jan 21st, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Option Strict On
  2. Option Explicit On
  3. Imports System.Console
  4. Module Module1
  5.     'Deklarieren Sie die Prozedur Einlesen, die vom Benutzer die Eingabe von
  6.    'Zeichenfolgen verlangt
  7.    'und diese als Funktionsergebnis zurück liefert. Die Eingabe wird solange
  8.    'wiederholt, bis folgende
  9.    'Kriterien erfüllt sind:
  10.    '- Erlaubte Zeichen sind Leerzeichen, Buchstaben, Punkt, Ausrufezeichen,
  11.    'Fragezeichen, Doppelpunkt, Ziffern.
  12.    '- Am Ende der Eingabe steht ein Punkt, Ausrufezeichen oder Fragezeichen.
  13.    Sub Einlesen(ByRef satz As String)
  14.         Dim i As Integer
  15.         satz = ""
  16.         Do
  17.             WriteLine("Bitte geben sie einen Satz ein: ")
  18.             satz = ReadLine()
  19.             i = 0
  20.             Do While i < satz.Length AndAlso UCase(satz.Chars(i)) Like "[A-Z0-9 :.?!]"
  21.                 i += 1
  22.             Loop
  23.             If Not satz Like "*[.?!]" Or i < satz.Length Then
  24.                 WriteLine("Eingabe ist fehlerhaft")
  25.             End If
  26.         Loop Until satz Like "*[?!.]" And i = satz.Length
  27.     End Sub
  28.     'Es gilt: Ein Text (eine beliebige Zeichenfolge als String-Wert) enthält
  29.    'einen oder mehrere Sätze.
  30.    'Jeder Satz In diesem Text ist entweder durch einen Punkt, ein Fragezeichen
  31.    'oder ein Ausrufezeichen
  32.    'abgeschlossen. Deklarieren Sie ausgehend vom unten angegebenen
  33.    'Funktionskopf die
  34.    'Funktion SatzEnde, welche die Position des ersten In Text vorkommenden
  35.    'Punktes, Fragezeichens
  36.    'oder Ausrufezeichens ermittelt (und damit das Ende des ersten In Text
  37.    'enthaltenen Satzes).
  38.    'Ermitteln Sie die Position, indem Sie den String-Wert von Text
  39.    'zeichenweise durchlaufen. Die
  40.    'ermittelte Position soll als Funktionsergebnis zurückgeliefert werden (
  41.    'Positionswerte von 1 an
  42.    'gezählt).
  43.    Function SatzEnde(Text As String) As Integer
  44.         Dim index As Integer = 0
  45.         Do While index < Text.Length AndAlso Not Text.Chars(index) Like "[.?!]"
  46.             index += 1
  47.         Loop
  48.         SatzEnde = index + 1
  49.  
  50.     End Function
  51.     'Deklarieren Sie ausgehend vom unten angegebenen Funktionskopf die Funktion
  52.    'ErsterSatz, welche
  53.    'den ersten In Text enthaltenen (und mit einem entsprechenden Zeichen
  54.    'abgeschlossenen)
  55.    'Satz als Funktionsergebnis liefert. Außerdem soll dieser erste Satz durch
  56.    'die Funktion aus dem
  57.    'Wert von Text entfernt werden (einschließlich Satzendezeichen). Nutzen Sie
  58.    'zur Realisierung
  59.    'dieser Funktion die Funktion SatzEnde
  60.    Function ErsterSatz(ByRef Text As String) As String
  61.         Dim startindex = 0
  62.         ErsterSatz = Text.Substring(0, SatzEnde(Text))
  63.         Text = Text.Remove(0, SatzEnde(Text))
  64.     End Function
  65.     'Deklarieren Sie eine Funktion AlleSaetze, die ausgehend von einem als
  66.    'String-Wert übergebenen
  67.    'Text alle In diesem Text enthaltenen Sätze als Elemente eines String-
  68.    'Arrays zurückliefert. Rufen
  69.    'Sie zur Ermittlung der einzelnen Sätze die deklarierte Funktion ErsterSatz
  70.    'entsprechend oft auf.
  71.    Function AlleSaetze(saetze As String) As String()
  72.         Dim arr As String()
  73.         Dim i As Integer = 0
  74.         While saetze <> ""
  75.             ReDim Preserve arr(i)
  76.             arr(i) = ErsterSatz(saetze)
  77.             i += 1
  78.         End While
  79.  
  80.         AlleSaetze = arr
  81.     End Function
  82.     'Deklarieren Sie ausgehend vom unten angegebenen Funktionskopf die Funktion
  83.    'IstBuchstabe,
  84.    'so dass sie das Ergebnis True liefert, wenn der Parameterwert ein großer
  85.    'Buchstabe (A bis Z)
  86.    'oder ein kleiner Buchstabe (a bis z) ist. Für alle anderen Zeichen soll
  87.    'die Funktion False liefern.
  88.    'Um die maximale Punktzahl zu erreichen, versuchen Sie, den Funktionsrumpf
  89.    'mit einer einzigen
  90.    'Anweisung zu realisieren.
  91.    Function IstBuchstabe(c As Char) As Boolean
  92.         IstBuchstabe = UCase(c) Like "[A-Z]"
  93.     End Function
  94.     'Einführung in die Programmierung - Übung 8
  95.    'Deklarieren Sie ausgehend vom angegebenen Funktionskopf die Funktion
  96.    'LoescheWort, die im
  97.    'String-Wert von Eingabe alle Vorkommen des String-Werts von Loeschwort
  98.    'durch ... (also drei
  99.    'Punkte) ersetzt. Die Ersetzung soll jedoch nur an den Stellen erfolgen, an
  100.    'denen unmittelbar
  101.    'hinter der zu ersetzenden Zeichenfolge kein Buchstabe (A bis Z oder a bis
  102.    'z) folgt. Rufen Sie
  103.    'zur Prüfung, ob ein Buchstabe folgt, die oben deklarierte Funktion
  104.    'IstBuchstabe auf. Sie können
  105.    'davon ausgehen, dass hinter dem zu ersetzenden String-Wert In Eingabe
  106.    'immer noch mindestens
  107.    '1 Zeichen folgt. Die Funktion soll den veränderten String-Wert als
  108.    'Ergebnis liefern.
  109.    Function LoescheWort(Eingabe As String, LoeschWort As String) As String
  110.         Dim pos As Integer = 1
  111.  
  112.         Do While InStr(pos, Eingabe, LoeschWort) > 0
  113.             pos = InStr(pos, Eingabe, LoeschWort)
  114.             If Not IstBuchstabe(Eingabe.Chars(pos + LoeschWort.Length - 1)) Then
  115.                 Eingabe = Eingabe.Remove(pos - 1, LoeschWort.Length).Insert(pos - 1, "...")
  116.             Else
  117.                 pos += LoeschWort.Length
  118.  
  119.             End If
  120.         Loop
  121.         LoescheWort = Eingabe
  122.  
  123.     End Function
  124.     'Deklarieren Sie ausgehend von diesem Funktionskopf die Funktion
  125.    'Anonymisiert, die im Wert
  126.    'von Eingabe auftretende Namen durch ein X ersetzt. Ein zu ersetzender Name
  127.    'steht immer
  128.    'hinter den Zeichen von Anrede, von diesen jedoch mit einem Leerzeichen
  129.    'abgetrennt. Jeder
  130.    'Name endet am folgenden Leerzeichen.
  131.    Function Anonymisiert(Eingabe As String, Anrede As String) As String
  132.         Dim position As Integer = 1
  133.  
  134.         Do While InStr(position, Eingabe, Anrede) > 0
  135.             position = InStr(position, Eingabe, Anrede) + Anrede.Length
  136.             If Eingabe.Chars(position - 1) = " " Then
  137.                 Do While position < Eingabe.Length AndAlso Eingabe.Chars(position) <> " "
  138.                     Eingabe = Eingabe.Remove(position, 1)
  139.                 Loop
  140.                 Eingabe = Eingabe.Insert(position, "X")
  141.             End If
  142.         Loop
  143.  
  144.         Anonymisiert = Eingabe
  145.     End Function
  146.     'Deklarieren Sie ausgehend von dem unten angegebenen Funktionskopf die
  147.    'Funktion ErstesWort,
  148.    'die in dem String-Wert von Eingabe das erste Wort ermittelt, das mit einem
  149.    'Leerzeichen von der
  150.    'restlichen Zeichenfolge im String-Wert von Eingabe abgetrennt ist. Die
  151.    'Funktion soll dieses Wort
  152.    'als Funktionsergebnis zurückliefern und den String-Wert von Eingabe um
  153.    'dieses Wort kürzen.
  154.    'Wenn im String-Wert von Eingabe kein Leerzeichen enthalten ist, soll der
  155.    'unveränderte Wert
  156.    'von Eingabe als Funktionsergebnis zurückgeliefert werden und der Wert von
  157.    'Eingabe auf den
  158.    'leeren String-Wert gesetzt werden.
  159.    Function ErstesWort(ByRef Eingabe As String) As String
  160.  
  161.     End Function
  162.     Sub Main()
  163.         Dim menue As Char
  164.         Dim satz As String = ""
  165.         Dim foo, saetze(-1) As String
  166.         Dim loesche, anrede As String
  167.         Do
  168.             WriteLine("A) Eingabe Satz")
  169.             WriteLine("B) Satz zerlegen")
  170.             WriteLine("C) Löschwort einfügen")
  171.             WriteLine("D) Anonymisieren")
  172.             WriteLine("E) Erstes Wort")
  173.             WriteLine("X) Ende")
  174.             Write("Wahl: ")
  175.             menue = CChar(UCase(ReadLine))
  176.             Select Case menue
  177.                 Case "A"c
  178.                     Einlesen(satz)
  179.                 Case "B"c
  180.                     saetze = AlleSaetze(satz)
  181.                     For Each foo In saetze
  182.                         WriteLine(LTrim(foo))
  183.                     Next
  184.                 Case "C"c
  185.                     Write("Bitte das Löschwort eingeben:")
  186.                     loesche = ReadLine()
  187.                     WriteLine(LoescheWort(satz, loesche))
  188.                 Case "D"c
  189.                     Write("Bitte die Anrede eingeben:")
  190.                     anrede = ReadLine()
  191.                     WriteLine(Anonymisiert(satz, anrede))
  192.                 Case "E"c
  193.                     saetze = AlleSaetze(satz)
  194.                     For Each foo In saetze
  195.                         'WriteLine("Erstes Wort:{0}", ErstesWort(foo))
  196.                        WriteLine("Restsatz:{0}", foo)
  197.                     Next
  198.             End Select
  199.         Loop Until menue = "X"
  200.     End Sub
  201. End Module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement