<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://ccwiki.digitalcampusvorarlberg.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hzayn</id>
	<title>CCWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://ccwiki.digitalcampusvorarlberg.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hzayn"/>
	<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php/Spezial:Beitr%C3%A4ge/Hzayn"/>
	<updated>2026-04-14T21:00:33Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/DB_%C3%9Cbungen&amp;diff=3197</id>
		<title>DCV 2023 09/DB Übungen</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/DB_%C3%9Cbungen&amp;diff=3197"/>
		<updated>2023-11-29T07:23:31Z</updated>

		<summary type="html">&lt;p&gt;Hzayn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden finden sich Übungen für das Thema Datenbanken. Weiters soll direkt ein Überblick über die Themen erfolgen. Als &#039;&#039;&#039;D&#039;&#039;&#039;aten&#039;&#039;&#039;B&#039;&#039;&#039;ank&#039;&#039;&#039;M&#039;&#039;&#039;anagement &#039;&#039;&#039;S&#039;&#039;&#039;ystem wird &#039;&#039;&#039;MySQL&#039;&#039;&#039;[https://www.mysql.com/de/] verwendet&lt;br /&gt;
&lt;br /&gt;
= Überblick =&lt;br /&gt;
Ein grundlegendes Verständnis folgender Begriffe soll erlangt werden. Diese sind nicht chronologisch geordnet.&lt;br /&gt;
* &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elation Diagramme erstellen (&#039;&#039;&#039;Chen Notation&#039;&#039;&#039;)&lt;br /&gt;
* Implementieren des &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramms in &#039;&#039;&#039;MySQL&#039;&#039;&#039;&lt;br /&gt;
* Primär- und Fremdschlüssel&lt;br /&gt;
** Erstellen von Fremdschlüssel &#039;&#039;&#039;Constraints&#039;&#039;&#039;&lt;br /&gt;
* SQL Queries&lt;br /&gt;
** Daten Abfragen&lt;br /&gt;
{{BML|code=&lt;br /&gt;
USE mondial;&lt;br /&gt;
SELECT * from City limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt alle Spalten, alle Zeilen aus den country Tabelle&lt;br /&gt;
SELECT * FROM mondial.country;&lt;br /&gt;
&lt;br /&gt;
-- Konstant als Text&lt;br /&gt;
SELECT &#039;Hello World!&#039; Greeting;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt alle Spalten, erste 5 Zeilen aus den country Tabelle&lt;br /&gt;
SELECT * FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt die Spalten Name und Capital der erste 5 Zeilen aus den country Tabelle&lt;br /&gt;
SELECT Name, Capital FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Zeigt die Spalten Name und Capital mit eigenen Namen&lt;br /&gt;
SELECT Name Land, Capital Hauptstadt FROM mondial.country limit 5;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name&lt;br /&gt;
SELECT Name, Capital FROM mondial.country WHERE Name = &#039;Austria&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Population&lt;br /&gt;
SELECT Name, Capital FROM mondial.country WHERE Population &amp;lt; 1000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Population&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Population BETWEEN 1000000 AND 2000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name beginnend mit A&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter auf Name am Ende mit A&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;%A&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit NOT Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name NOT LIKE &#039;A%&#039;;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit OR Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039; OR Population &amp;lt; 1000000;&lt;br /&gt;
&lt;br /&gt;
-- Abfrage mit Filter mit AND Operator&lt;br /&gt;
SELECT Name, Capital, Population FROM mondial.country WHERE Name LIKE &#039;A%&#039; AND Population &amp;lt; 1000000;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
** Tabellen verknüpfen mit &#039;&#039;&#039;WHERE&#039;&#039;&#039; und &#039;&#039;&#039;INNER JOIN&#039;&#039;&#039;&lt;br /&gt;
** Unterschied zwischen &#039;&#039;&#039;INNER JOIN&#039;&#039;&#039; und &#039;&#039;&#039;LEFT OUTER JOIN&#039;&#039;&#039; und &#039;&#039;&#039;RIGHT OUTER JOIN&#039;&#039;&#039;&lt;br /&gt;
** Einfügen mittels &#039;&#039;&#039;INSERT&#039;&#039;&#039;&lt;br /&gt;
** Löschen mittels &#039;&#039;&#039;DELETE&#039;&#039;&#039;&lt;br /&gt;
** Aktualisieren mittels &#039;&#039;&#039;UPDATE&#039;&#039;&#039;&lt;br /&gt;
* Anbindung an die Datenbank mittels &#039;&#039;&#039;JDBC&#039;&#039;&#039; in &#039;&#039;&#039;Java&#039;&#039;&#039;&lt;br /&gt;
** Verbindung zur Datenbank herstellen&lt;br /&gt;
** Daten anlegen&lt;br /&gt;
** Daten abrufen&lt;br /&gt;
** Daten löschen&lt;br /&gt;
&lt;br /&gt;
= Übungen =&lt;br /&gt;
&lt;br /&gt;
Als Voraussetzung wird eine funktionierende &#039;&#039;&#039;MySQL&#039;&#039;&#039; installation mit &#039;&#039;&#039;MySQL Workbench&#039;&#039;&#039; vorausgesetzt. &#039;&#039;&#039;MySQL Workbench&#039;&#039;&#039; ist ein grafisches Tool um mit &#039;&#039;&#039;MySQL&#039;&#039;&#039; zu arbeiten.&lt;br /&gt;
&lt;br /&gt;
Der Download für beide Tools findet sich [https://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.27.1.msi hier].&lt;br /&gt;
* Add Product&lt;br /&gt;
* MySQL Server hinzufügen&lt;br /&gt;
* MySQL Workbench hinzufügen&lt;br /&gt;
&lt;br /&gt;
Für den Bereich &#039;&#039;&#039;S&#039;&#039;&#039;tructured &#039;&#039;&#039;Q&#039;&#039;&#039;uery &#039;&#039;&#039;L&#039;&#039;&#039;anguage wird weiters vorausgesetzt dass eine &#039;&#039;&#039;Datenbank&#039;&#039;&#039; mit folgenden Inhalten existiert:&lt;br /&gt;
 Ein großer Dank geht an die Uni Göttingen für die Bereitstellung der &#039;&#039;&#039;Mondial&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;göttingen&amp;quot;&amp;gt;https://www.dbis.informatik.uni-goettingen.de/Mondial/&amp;lt;/ref&amp;gt; Datenbank&lt;br /&gt;
* [[Datei:Mondial-schema-mysql.zip]]&lt;br /&gt;
* [[Datei:Mondial-inputs-mysql.zip]]&lt;br /&gt;
&lt;br /&gt;
# Zuerst MySQL Workbench öffnen, mit dem DBMS verbinden.&lt;br /&gt;
# File -&amp;gt; Open Sql Script -&amp;gt; Schema auswählen (zuerst das zip entpacken)&lt;br /&gt;
# Mit dem Blitz ausführen&lt;br /&gt;
## Tritt ein Fehler auf &amp;gt;&amp;gt;,ORACLE&amp;lt;&amp;lt; aus der ersten Zeile entfernen&lt;br /&gt;
# File -&amp;gt; Open Sql Script -&amp;gt; Input auswählen (zuerst das zip entpacken)&lt;br /&gt;
# Mit dem Blitz ausführen&lt;br /&gt;
# Nun sollte die Datenbank Mondial existieren und es geht weiter mit den übungen zu SQL Abfragen&lt;br /&gt;
&lt;br /&gt;
== SQL Abfragen ==&lt;br /&gt;
Verschiedene Abfragen um Tabellen zu verbinden. Verwende für die Abfragen die &#039;&#039;&#039;Mondial&#039;&#039;&#039; Datenbank.&lt;br /&gt;
[[Datei:ER-Mondial.jpg|mini|none|600px|Mondial ER Diagramm&amp;lt;ref&amp;gt;https://www.dbis.informatik.uni-goettingen.de/Mondial/mondial-abh.pdf&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Datei:Mondial Abhängingkeiten.jpg|mini|none|400px|Mondial Abhängigkeiten&amp;lt;ref name=&amp;quot;göttingen&amp;quot;/&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe SQL Queries ====&lt;br /&gt;
 Wie viele Einwohner hat Österreich?&lt;br /&gt;
&lt;br /&gt;
 Wie viele Einwohner hat der Kontinent Europa?&lt;br /&gt;
&lt;br /&gt;
 Welche Flüsse fließen durch Österreich?&lt;br /&gt;
&lt;br /&gt;
 Welche Flüsse fließen durch Europa (nur den Flussnamen)?&lt;br /&gt;
&lt;br /&gt;
 Wie viel Prozent der Menschen leben im Kontinent Europa?&lt;br /&gt;
&lt;br /&gt;
 Alle Länder die mit einem A anfangen&lt;br /&gt;
&lt;br /&gt;
 Alle Länder die mit einem A anfangen und deren Bundesländer mit Einwohnerzahl, sortiert nach Einwohnerzahl&lt;br /&gt;
&lt;br /&gt;
 Alle Flüsse die durch Europa fließen (nur Flüsse und deren Länge), sortiert nach Länge&lt;br /&gt;
&lt;br /&gt;
 Alle Inseln im Pazifik mit &amp;gt;50% islamischem Bekenntnis&lt;br /&gt;
&lt;br /&gt;
 Alle 3000er, welche in einem Land sind, welches zu mindestens 60% römisch Katholisch ist&lt;br /&gt;
&lt;br /&gt;
 Alle Länder mit mindestens einem See mit mindestens 100 Meter Tiefe und mindestens einem Berg mit mindestens 1500 Höhenmeter&lt;br /&gt;
&lt;br /&gt;
 Einwohnerzahl pro Religion&lt;br /&gt;
&lt;br /&gt;
 Alle Länder, nur die Namen und die Meere dazu (keine Null Werte)&lt;br /&gt;
&lt;br /&gt;
 Alle Länder, nur die Namen, und wenn sie haben, das Meer dazu&lt;br /&gt;
&lt;br /&gt;
 Das Unabhängigkeitsdatum von Ländern die eine Wüste haben und die ethnische Gruppe &#039;&#039;&#039;African&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Welche Länder haben genau 3 Städte? Welche Länder sind dies?&lt;br /&gt;
&lt;br /&gt;
 Welches sind die 3 größten Städte von Amerika (Kontinent)?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg von Österreich? Wie hoch ist er?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg von Europa? Wie hoch ist er?&lt;br /&gt;
&lt;br /&gt;
 Was ist der größte Berg pro Kontinent? Wie hoch sind diese?&lt;br /&gt;
&lt;br /&gt;
 Welches Land hat am meisten anerkannte Religionen? Wie viel sind es?&lt;br /&gt;
&lt;br /&gt;
 Welche Organisationen haben deren Hauptsitz in Österreich? Wie viele Mitglieder haben diese Organisationen?&lt;br /&gt;
&lt;br /&gt;
 Was sind die Top 10 Sprachen? Wie viele native Speaker sprechen diese Sprache?&lt;br /&gt;
&lt;br /&gt;
[ Hier nicht klicken (das sind die Lösungen)]&lt;br /&gt;
&lt;br /&gt;
== ER Entwurf ==&lt;br /&gt;
Für den Entwurf von &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elationship Modellen gibt es mehrere Möglichkeiten. Soll von einem bestehenden Datenbestand (in unnormalisierter Form) ein Datenbankmodell abgeleitet werden, so können die [https://www.datenbanken-verstehen.de/datenmodellierung/normalisierung/ Normalformen] angewandt werden, auf diese werden wir hier jedoch nicht eingehen. Wird ein ER-Modell direkt anhand einer Problemstellung entworfen, so ist diese bei korrektem Entwurf, inhärent normalisiert.&lt;br /&gt;
&lt;br /&gt;
Für die ER-Modellierung gibt es verschiedene Notationen:&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Chen-Notation Chen Notation und modifizierte Chen Notation]&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Min-Max-Notation Min/Max Notation]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Für die folgenden ER-Modelle soll die Chen Notation angewendet werden, diese ist am einfachsten und am wenigsten fehleranfällig. Nach der ER-Modellierung kann direkt ein logischer Entwurf abgeleitet werden, welcher dann &amp;quot;direkt&amp;quot; in die Datenbank übertragen werden kann.&lt;br /&gt;
&lt;br /&gt;
 Als Zeichenprogramm zum Datenbank Entwurf eignet sich [http://dia-installer.de/ Dia]&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Im folgenden finden sich einige Beispiele zur Übung des ER-Entwurfs. Es ist dabei sehr wichtig aus der textuellen Problemstellung herauszufinden was Teil des ER-Entwurfs ist, und was zum logischen Teil der Anwendung gehört und somit nichts mit dem Entwurf zu tun hat. Weiters ist es sehr wichtig, etwaige Lücken in der Problemstellung zu erkennen und auszufüllen.&lt;br /&gt;
&lt;br /&gt;
Für jedes Beispiel gilt:&lt;br /&gt;
* ER-Entwurf erstellen (inklusive aller wichtigen Attribute)&lt;br /&gt;
* Logischer Entwurf (Entweder in textueller oder tabellarischer Form)&lt;br /&gt;
&lt;br /&gt;
==== Übungsfirma ====&lt;br /&gt;
Eine Firma hat mehrere Mitarbeiter, diese arbeiten in einer Abteilung. Ein Mitarbeiter hat einen Vorgesetzten, dieser ist selbst wieder ein Mitarbeiter. Weiters gibt es Projekte an denen mehrere Mitarbeiter beteiligt sind, Mitarbeiter selbst können auch an mehreren Projekten mitarbeiten.&lt;br /&gt;
&lt;br /&gt;
==== Übungsfirma2 ====&lt;br /&gt;
Ergänze den Entwurf aus dem vorhergehenden Beispiel so, dass Mitarbeiter in einem gewissen Zeitraum an einem Projekt arbeiten können.&lt;br /&gt;
&lt;br /&gt;
 [[Datei:Uebungsfirma all.zip|mini|]] Enthält ER-Entwurf, logischer Entwurf, SQL Statements&lt;br /&gt;
[[Datei:Uebungsfirma.png|mini|none|400px|ER-Diagramm Übungsfirma]]&lt;br /&gt;
&lt;br /&gt;
==== Zoo ====&lt;br /&gt;
Mehrere in ganz Deutschland verteilte Zoos sollen mittels einer Datenbank verwaltet werden. Die Tiere werden von Pflegern gepflegt und befinden sich in Gehegen. Außerdem bekommen die Tiere eine spezielle Futtermischung, welche von Lieferanten geliefert wird.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Zoo all.zip|mini]]&lt;br /&gt;
[[Datei:Zoo.png|mini|none|400px|Zoo ER-Diagramm]]&lt;br /&gt;
&lt;br /&gt;
==== Druckerproduzent ====&lt;br /&gt;
Eine Firma, die Drucker herstellt, benötigt eine Datenbank zur Verwaltung ihrer Geschäftsprozesse. Die Firma hat mehrere Abteilungen, wie zum Beispiel Lager, Fertigung, Vertrieb. Zur Herstellung der Drucker werden Zukaufteile benötigt, die also nicht in der Fertigung selbst hergestellt werden. Der Fabrikleiter möchte auch einen Überblick über die Mitarbeiter mit allen relevanten Daten haben.&lt;br /&gt;
&lt;br /&gt;
==== Restaurant ====&lt;br /&gt;
Sie besitzen ein Restaurant, natürlich haben Sie Angestellte die entweder Koch, Kellner oder Lieferant sein können, überlegen Sie sich die nötigen Attribute selbst. Kunden können bei Ihnen im Restaurant bestellen und dort essen, Sie bieten aber auch das Angebot die Bestellung nach Hause zu liefern. Der Kellner ist für die Bearbeitung der Bestellung zuständig und teilt die Kunden zu den jeweiligen Tischen ein.&lt;br /&gt;
&lt;br /&gt;
==== Ferienhausverwaltung ====&lt;br /&gt;
Eine Ferienhausvermietung braucht ein Datenbanksystem für die Verwaltung der Buchungen. Zwischen zwei Buchungen muss immer eine Reinigungskraft das gesamte Haus reinigen und auf Schäden kontrollieren. Für diese Reinigung und Kontrolle braucht die Reinigungskraft zwischen 3-6 Stunden, je nach Größe / Kategorie bzw. Nächtigungspreis des Hauses. Die Ferienhäuser werden demnach in drei Klassen unterteilt.&lt;br /&gt;
* &amp;lt; 150 € / Nacht (Reinigung &amp;amp; Kontrolle: 3 Stunden)&lt;br /&gt;
* &amp;lt; 500 € / Nacht (Reinigung &amp;amp; Kontrolle: 5 Stunden)&lt;br /&gt;
* &amp;gt; 500 € / Nacht (Reinigung &amp;amp; Kontrolle: 6 Stunden)&lt;br /&gt;
Bei Schäden muss das Haus für die Zeit, bis der Schaden repariert wurde, gesperrt werden.&lt;br /&gt;
Die Ferienhäuser haben zwischen ein und vier Stockwerke (inkl. Keller), sowie unterschiedliche Ausstattungen (Bsp. Garten, WLAN, Balkon, ...).&lt;br /&gt;
Fügen Sie weitere Attribute (Bsp. Quadratmeter) hinzu, welche Sie für wichtig erachten.&lt;br /&gt;
&lt;br /&gt;
== Datenbank Anwendung ==&lt;br /&gt;
Im folgenden soll in mehreren Schritten eine Datenbank Anwendung modelliert und erstellt werden. Diese Anwendung soll ein einfaches Zahlungssystem mit Überweisung und Bankomat beeinhalten.&lt;br /&gt;
* Kunden sollen angelegt werden&lt;br /&gt;
* Es sollen Konten angelegt werden&lt;br /&gt;
* Konten sollen Geld überweisen/einzahlen und überweisen können&lt;br /&gt;
* Jede Transaktion soll gespeichert werden mit Betrag, Quelle, Ziel und Datum&lt;br /&gt;
* Der Kontostand soll aufgrund aller vorhergehenden Transaktion berechnet werden&lt;br /&gt;
* Der Kunde soll Geld einzahlen und abheben können&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: &#039;&#039;&#039;E&#039;&#039;&#039;ntity &#039;&#039;&#039;R&#039;&#039;&#039;elation (ER) Diagramm erstellen ====&lt;br /&gt;
Entwirf ein korrektes &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramm für die Datenbankanwendung, zumindest sollen die Tabellen &#039;&#039;&#039;Kunde&#039;&#039;&#039;, &#039;&#039;&#039;Konto&#039;&#039;&#039; und &#039;&#039;&#039;Transaktion&#039;&#039;&#039; enthalten sein. Achte auf die korrekte Beziehung zwischen den Tabellen.&lt;br /&gt;
* Ein Kunde kann mehrere Konten haben&lt;br /&gt;
* Ein Konto kann mehrere Kunden haben, diese haben dann eine unterschiedliche Rolle (Besitzer, Zeichnungsberechtigt, etc...)&lt;br /&gt;
* Eine Transaktion muss ein Quell- und ein Zielkonto haben&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Anlegen der Datenbank in MySQL ====&lt;br /&gt;
Implementiere das erstellte &#039;&#039;&#039;ER&#039;&#039;&#039; Diagramm in MySQL. Achte auf das Anlegen von korrekten &#039;&#039;&#039;Primär-&#039;&#039;&#039; und &#039;&#039;&#039;Fremdschlüsseln.&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Verbinden der Datenbank (JDBC) in Java ====&lt;br /&gt;
Verbinde dich über die &#039;&#039;&#039;JDBC&#039;&#039;&#039; Schnittstelle in Java mit der angelegten Datenbank. Das Anlegen einer Testdatenbank kann sehr hilfreich sein um Tests zu schreiben.&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: Kunden/Konten und Transaktionen in Java anlegen und abrufen ====&lt;br /&gt;
Erstelle die Modelle für deine Tabellen in Java und ermögliche über Methoden das &#039;&#039;&#039;Erstellen&#039;&#039;&#039;, &#039;&#039;&#039;Aktualisieren&#039;&#039;&#039;, &#039;&#039;&#039;Lesen&#039;&#039;&#039; und &#039;&#039;&#039;Löschen.&lt;br /&gt;
 &#039;&#039;&#039;C&#039;&#039;&#039;reate &#039;&#039;&#039;R&#039;&#039;&#039;ead &#039;&#039;&#039;U&#039;&#039;&#039;pdate &#039;&#039;&#039;D&#039;&#039;&#039;elete&lt;br /&gt;
&lt;br /&gt;
==== Aufgabe: (Kommandozeilenanwendung) für den Bankomat erstellen ====&lt;br /&gt;
Erstelle ein Userinterface für die Bankomat Anwendung.&lt;br /&gt;
* Der Benutzer soll authentifiziert werden&lt;br /&gt;
* Es soll eine entsprechende Auswahl an Konten angezeigt werden&lt;br /&gt;
* Einzahlen/Auszahlen soll möglich sein&lt;br /&gt;
* Überweisung an anderes Konto&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;/div&gt;</summary>
		<author><name>Hzayn</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3077</id>
		<title>DCV 2023 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3077"/>
		<updated>2023-10-24T07:22:56Z</updated>

		<summary type="html">&lt;p&gt;Hzayn: /* Aufgabe: Wortanalyse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die [https://learn.microsoft.com/en-us/dotnet/api/system.string?view=net-7.0 String] Operationen {{JSL|[i]}}, {{JSL|ToCharArray()}}, {{JSL|IndexOf(...)}}, {{JSL|Replace(...)}}, {{JSL|Insert(...)}}, {{JSL|Split(...)}} und {{JSL|Substring(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode.&lt;br /&gt;
# Sortiere die Namen nach Länge aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen nach Länge absteigend (Descending)&lt;br /&gt;
# Sortiere die Namen lexikographisch aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen lexikographisch absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|CompareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.CompareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Jovo&amp;quot;, &amp;quot;Mehmet&amp;quot;, &amp;quot;Sven&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Selina&amp;quot;, &amp;quot;Niklas&amp;quot;, &amp;quot;Ali&amp;quot;, &amp;quot;Fabienne&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Sandro&amp;quot;, &amp;quot;Hassan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Dimitri&amp;quot;, &amp;quot;Patrick&amp;quot;, &amp;quot;Kerem&amp;quot;, &amp;quot;Timo&amp;quot;, &amp;quot;Gheorghe&amp;quot;, &amp;quot;Mohammed&amp;quot;, &amp;quot;Cemal&amp;quot;, &amp;quot;Simon&amp;quot;, &amp;quot;Fabian&amp;quot;, &amp;quot;Dario&amp;quot;, &amp;quot;Michael&amp;quot;, &amp;quot;Erik&amp;quot;, &amp;quot;David&amp;quot;, &amp;quot;Riccardo&amp;quot;, &amp;quot;Eren&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.ToCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|Ressources.StringRessources.getText()}}.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Denke daran, die Ressources als Reference zu dem Projekt zu geben... Im Zweifelsfall frage Hassan ;-)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert  ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@drlue&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@microsoft.c&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Knobelaufgabe:&#039;&#039;&#039; Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|Replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|Append}} auch einen {{JSL|System.Environment.NewLine()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|Main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.Compare(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}} und {{Ressources.StringRessources.getText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Fakultät ===&lt;br /&gt;
Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.&amp;lt;/cite&amp;gt;&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Fakult%C3%A4t_(Mathematik)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fac(n) = n * fac(n -1)&lt;br /&gt;
fac(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
 &#039;&#039;&#039;Bsp.:&#039;&#039;&#039; fac(5) =&amp;gt; 5 * 4 * 3 * 2 * 1 =&amp;gt; 120&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Permutation ===&lt;br /&gt;
Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Tip um Ergebnis zu prüfen:&#039;&#039;&#039; Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.&lt;/div&gt;</summary>
		<author><name>Hzayn</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3076</id>
		<title>DCV 2023 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3076"/>
		<updated>2023-10-24T07:21:51Z</updated>

		<summary type="html">&lt;p&gt;Hzayn: /* Aufgabe: Split &amp;amp; Sort */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die [https://learn.microsoft.com/en-us/dotnet/api/system.string?view=net-7.0 String] Operationen {{JSL|[i]}}, {{JSL|ToCharArray()}}, {{JSL|IndexOf(...)}}, {{JSL|Replace(...)}}, {{JSL|Insert(...)}}, {{JSL|Split(...)}} und {{JSL|Substring(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode.&lt;br /&gt;
# Sortiere die Namen nach Länge aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen nach Länge absteigend (Descending)&lt;br /&gt;
# Sortiere die Namen lexikographisch aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen lexikographisch absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|CompareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.CompareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Jovo&amp;quot;, &amp;quot;Mehmet&amp;quot;, &amp;quot;Sven&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Selina&amp;quot;, &amp;quot;Niklas&amp;quot;, &amp;quot;Ali&amp;quot;, &amp;quot;Fabienne&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Sandro&amp;quot;, &amp;quot;Hassan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Dimitri&amp;quot;, &amp;quot;Patrick&amp;quot;, &amp;quot;Kerem&amp;quot;, &amp;quot;Timo&amp;quot;, &amp;quot;Gheorghe&amp;quot;, &amp;quot;Mohammed&amp;quot;, &amp;quot;Cemal&amp;quot;, &amp;quot;Simon&amp;quot;, &amp;quot;Fabian&amp;quot;, &amp;quot;Dario&amp;quot;, &amp;quot;Michael&amp;quot;, &amp;quot;Erik&amp;quot;, &amp;quot;David&amp;quot;, &amp;quot;Riccardo&amp;quot;, &amp;quot;Eren&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.ToCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|Ressources.StringRessources.getText()}}.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Denke daran, die Ressources als Reference zu dem Projekt zu geben... Im Zweifelsfall frage Hassan ;-)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert  ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@drlue&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@microsoft.c&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Knobelaufgabe:&#039;&#039;&#039; Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|Replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|Append}} auch einen {{JSL|System.Environment.NewLine()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|Main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.Compare(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Fakultät ===&lt;br /&gt;
Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.&amp;lt;/cite&amp;gt;&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Fakult%C3%A4t_(Mathematik)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fac(n) = n * fac(n -1)&lt;br /&gt;
fac(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
 &#039;&#039;&#039;Bsp.:&#039;&#039;&#039; fac(5) =&amp;gt; 5 * 4 * 3 * 2 * 1 =&amp;gt; 120&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Permutation ===&lt;br /&gt;
Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Tip um Ergebnis zu prüfen:&#039;&#039;&#039; Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.&lt;/div&gt;</summary>
		<author><name>Hzayn</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3075</id>
		<title>DCV 2023 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3075"/>
		<updated>2023-10-24T07:19:11Z</updated>

		<summary type="html">&lt;p&gt;Hzayn: /* Aufgabe: Split */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die [https://learn.microsoft.com/en-us/dotnet/api/system.string?view=net-7.0 String] Operationen {{JSL|[i]}}, {{JSL|ToCharArray()}}, {{JSL|IndexOf(...)}}, {{JSL|Replace(...)}}, {{JSL|Insert(...)}}, {{JSL|Split(...)}} und {{JSL|Substring(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode.&lt;br /&gt;
# Sortiere die Namen nach Länge aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen nach Länge absteigend (Descending)&lt;br /&gt;
# Sortiere die Namen lexikographisch aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen lexikographisch absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|CompareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.CompareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Jovo&amp;quot;, &amp;quot;Mehmet&amp;quot;, &amp;quot;Sven&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Selina&amp;quot;, &amp;quot;Niklas&amp;quot;, &amp;quot;Ali&amp;quot;, &amp;quot;Fabienne&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Sandro&amp;quot;, &amp;quot;Hassan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Dimitri&amp;quot;, &amp;quot;Patrick&amp;quot;, &amp;quot;Kerem&amp;quot;, &amp;quot;Timo&amp;quot;, &amp;quot;Gheorghe&amp;quot;, &amp;quot;Mohammed&amp;quot;, &amp;quot;Cemal&amp;quot;, &amp;quot;Simon&amp;quot;, &amp;quot;Fabian&amp;quot;, &amp;quot;Dario&amp;quot;, &amp;quot;Michael&amp;quot;, &amp;quot;Erik&amp;quot;, &amp;quot;David&amp;quot;, &amp;quot;Riccardo&amp;quot;, &amp;quot;Eren&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.ToCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|Ressources.StringRessources.getText()}}.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Denke daran, die Ressources als Reference zu dem Projekt zu geben... Im Zweifelsfall frage Hassan ;-)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert  ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@drlue&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@microsoft.c&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Knobelaufgabe:&#039;&#039;&#039; Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|Replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|Append}} auch einen {{JSL|System.Environment.NewLine()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|Main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Fakultät ===&lt;br /&gt;
Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.&amp;lt;/cite&amp;gt;&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Fakult%C3%A4t_(Mathematik)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fac(n) = n * fac(n -1)&lt;br /&gt;
fac(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
 &#039;&#039;&#039;Bsp.:&#039;&#039;&#039; fac(5) =&amp;gt; 5 * 4 * 3 * 2 * 1 =&amp;gt; 120&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Permutation ===&lt;br /&gt;
Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Tip um Ergebnis zu prüfen:&#039;&#039;&#039; Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.&lt;/div&gt;</summary>
		<author><name>Hzayn</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3074</id>
		<title>DCV 2023 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3074"/>
		<updated>2023-10-24T07:13:49Z</updated>

		<summary type="html">&lt;p&gt;Hzayn: /* Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die [https://learn.microsoft.com/en-us/dotnet/api/system.string?view=net-7.0 String] Operationen {{JSL|[i]}}, {{JSL|ToCharArray()}}, {{JSL|IndexOf(...)}}, {{JSL|Replace(...)}}, {{JSL|Insert(...)}}, {{JSL|Split(...)}} und {{JSL|Substring(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode.&lt;br /&gt;
# Sortiere die Namen nach Länge aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen nach Länge absteigend (Descending)&lt;br /&gt;
# Sortiere die Namen lexikographisch aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen lexikographisch absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|CompareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.CompareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Jovo&amp;quot;, &amp;quot;Mehmet&amp;quot;, &amp;quot;Sven&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Selina&amp;quot;, &amp;quot;Niklas&amp;quot;, &amp;quot;Ali&amp;quot;, &amp;quot;Fabienne&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Sandro&amp;quot;, &amp;quot;Hassan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Dimitri&amp;quot;, &amp;quot;Patrick&amp;quot;, &amp;quot;Kerem&amp;quot;, &amp;quot;Timo&amp;quot;, &amp;quot;Gheorghe&amp;quot;, &amp;quot;Mohammed&amp;quot;, &amp;quot;Cemal&amp;quot;, &amp;quot;Simon&amp;quot;, &amp;quot;Fabian&amp;quot;, &amp;quot;Dario&amp;quot;, &amp;quot;Michael&amp;quot;, &amp;quot;Erik&amp;quot;, &amp;quot;David&amp;quot;, &amp;quot;Riccardo&amp;quot;, &amp;quot;Eren&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.ToCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|Ressources.StringRessources.getText()}}.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Denke daran, die Ressources als Reference zu dem Projekt zu geben... Im Zweifelsfall frage Hassan ;-)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert  ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@drlue&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@microsoft.c&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Knobelaufgabe:&#039;&#039;&#039; Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|Replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Fakultät ===&lt;br /&gt;
Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.&amp;lt;/cite&amp;gt;&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Fakult%C3%A4t_(Mathematik)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fac(n) = n * fac(n -1)&lt;br /&gt;
fac(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
 &#039;&#039;&#039;Bsp.:&#039;&#039;&#039; fac(5) =&amp;gt; 5 * 4 * 3 * 2 * 1 =&amp;gt; 120&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Permutation ===&lt;br /&gt;
Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Tip um Ergebnis zu prüfen:&#039;&#039;&#039; Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.&lt;/div&gt;</summary>
		<author><name>Hzayn</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3073</id>
		<title>DCV 2023 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3073"/>
		<updated>2023-10-24T07:13:27Z</updated>

		<summary type="html">&lt;p&gt;Hzayn: /* Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die [https://learn.microsoft.com/en-us/dotnet/api/system.string?view=net-7.0 String] Operationen {{JSL|[i]}}, {{JSL|ToCharArray()}}, {{JSL|IndexOf(...)}}, {{JSL|Replace(...)}}, {{JSL|Insert(...)}}, {{JSL|Split(...)}} und {{JSL|Substring(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode.&lt;br /&gt;
# Sortiere die Namen nach Länge aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen nach Länge absteigend (Descending)&lt;br /&gt;
# Sortiere die Namen lexikographisch aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen lexikographisch absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|CompareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.CompareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Jovo&amp;quot;, &amp;quot;Mehmet&amp;quot;, &amp;quot;Sven&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Selina&amp;quot;, &amp;quot;Niklas&amp;quot;, &amp;quot;Ali&amp;quot;, &amp;quot;Fabienne&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Sandro&amp;quot;, &amp;quot;Hassan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Dimitri&amp;quot;, &amp;quot;Patrick&amp;quot;, &amp;quot;Kerem&amp;quot;, &amp;quot;Timo&amp;quot;, &amp;quot;Gheorghe&amp;quot;, &amp;quot;Mohammed&amp;quot;, &amp;quot;Cemal&amp;quot;, &amp;quot;Simon&amp;quot;, &amp;quot;Fabian&amp;quot;, &amp;quot;Dario&amp;quot;, &amp;quot;Michael&amp;quot;, &amp;quot;Erik&amp;quot;, &amp;quot;David&amp;quot;, &amp;quot;Riccardo&amp;quot;, &amp;quot;Eren&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.ToCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|Ressources.StringRessources.getText()}}.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Denke daran, die Ressources als Reference zu dem Projekt zu geben... Im Zweifelsfall frage Hassan ;-)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert  ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@drlue&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@microsoft.c&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Knobelaufgabe:&#039;&#039;&#039; Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|Replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Fakultät ===&lt;br /&gt;
Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.&amp;lt;/cite&amp;gt;&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Fakult%C3%A4t_(Mathematik)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fac(n) = n * fac(n -1)&lt;br /&gt;
fac(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
 &#039;&#039;&#039;Bsp.:&#039;&#039;&#039; fac(5) =&amp;gt; 5 * 4 * 3 * 2 * 1 =&amp;gt; 120&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Permutation ===&lt;br /&gt;
Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Tip um Ergebnis zu prüfen:&#039;&#039;&#039; Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.&lt;/div&gt;</summary>
		<author><name>Hzayn</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3072</id>
		<title>DCV 2023 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3072"/>
		<updated>2023-10-24T07:13:14Z</updated>

		<summary type="html">&lt;p&gt;Hzayn: /* Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die [https://learn.microsoft.com/en-us/dotnet/api/system.string?view=net-7.0 String] Operationen {{JSL|[i]}}, {{JSL|ToCharArray()}}, {{JSL|IndexOf(...)}}, {{JSL|Replace(...)}}, {{JSL|Insert(...)}}, {{JSL|Split(...)}} und {{JSL|Substring(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode.&lt;br /&gt;
# Sortiere die Namen nach Länge aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen nach Länge absteigend (Descending)&lt;br /&gt;
# Sortiere die Namen lexikographisch aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen lexikographisch absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|CompareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.CompareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Jovo&amp;quot;, &amp;quot;Mehmet&amp;quot;, &amp;quot;Sven&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Selina&amp;quot;, &amp;quot;Niklas&amp;quot;, &amp;quot;Ali&amp;quot;, &amp;quot;Fabienne&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Sandro&amp;quot;, &amp;quot;Hassan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Dimitri&amp;quot;, &amp;quot;Patrick&amp;quot;, &amp;quot;Kerem&amp;quot;, &amp;quot;Timo&amp;quot;, &amp;quot;Gheorghe&amp;quot;, &amp;quot;Mohammed&amp;quot;, &amp;quot;Cemal&amp;quot;, &amp;quot;Simon&amp;quot;, &amp;quot;Fabian&amp;quot;, &amp;quot;Dario&amp;quot;, &amp;quot;Michael&amp;quot;, &amp;quot;Erik&amp;quot;, &amp;quot;David&amp;quot;, &amp;quot;Riccardo&amp;quot;, &amp;quot;Eren&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.ToCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|Ressources.StringRessources.getText()}}.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Denke daran, die Ressources als Reference zu dem Projekt zu geben... Im Zweifelsfall frage Hassan ;-)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert  ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@drlue&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@microsoft.c&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getText()}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Knobelaufgabe:&#039;&#039;&#039; Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|Replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Fakultät ===&lt;br /&gt;
Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.&amp;lt;/cite&amp;gt;&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Fakult%C3%A4t_(Mathematik)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fac(n) = n * fac(n -1)&lt;br /&gt;
fac(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
 &#039;&#039;&#039;Bsp.:&#039;&#039;&#039; fac(5) =&amp;gt; 5 * 4 * 3 * 2 * 1 =&amp;gt; 120&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Permutation ===&lt;br /&gt;
Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Tip um Ergebnis zu prüfen:&#039;&#039;&#039; Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.&lt;/div&gt;</summary>
		<author><name>Hzayn</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3071</id>
		<title>DCV 2023 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3071"/>
		<updated>2023-10-24T07:03:35Z</updated>

		<summary type="html">&lt;p&gt;Hzayn: /* Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die [https://learn.microsoft.com/en-us/dotnet/api/system.string?view=net-7.0 String] Operationen {{JSL|[i]}}, {{JSL|ToCharArray()}}, {{JSL|IndexOf(...)}}, {{JSL|Replace(...)}}, {{JSL|Insert(...)}}, {{JSL|Split(...)}} und {{JSL|Substring(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode.&lt;br /&gt;
# Sortiere die Namen nach Länge aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen nach Länge absteigend (Descending)&lt;br /&gt;
# Sortiere die Namen lexikographisch aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen lexikographisch absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|CompareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.CompareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Jovo&amp;quot;, &amp;quot;Mehmet&amp;quot;, &amp;quot;Sven&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Selina&amp;quot;, &amp;quot;Niklas&amp;quot;, &amp;quot;Ali&amp;quot;, &amp;quot;Fabienne&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Sandro&amp;quot;, &amp;quot;Hassan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Dimitri&amp;quot;, &amp;quot;Patrick&amp;quot;, &amp;quot;Kerem&amp;quot;, &amp;quot;Timo&amp;quot;, &amp;quot;Gheorghe&amp;quot;, &amp;quot;Mohammed&amp;quot;, &amp;quot;Cemal&amp;quot;, &amp;quot;Simon&amp;quot;, &amp;quot;Fabian&amp;quot;, &amp;quot;Dario&amp;quot;, &amp;quot;Michael&amp;quot;, &amp;quot;Erik&amp;quot;, &amp;quot;David&amp;quot;, &amp;quot;Riccardo&amp;quot;, &amp;quot;Eren&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.ToCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|Ressources.StringRessources.getText()}}.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Denke daran, die Ressources als Reference zu dem Projekt zu geben... Im Zweifelsfall frage Hassan ;-)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert  ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@drlue&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@microsoft.c&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Knobelaufgabe:&#039;&#039;&#039; Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|Replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Fakultät ===&lt;br /&gt;
Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.&amp;lt;/cite&amp;gt;&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Fakult%C3%A4t_(Mathematik)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fac(n) = n * fac(n -1)&lt;br /&gt;
fac(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
 &#039;&#039;&#039;Bsp.:&#039;&#039;&#039; fac(5) =&amp;gt; 5 * 4 * 3 * 2 * 1 =&amp;gt; 120&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Permutation ===&lt;br /&gt;
Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Tip um Ergebnis zu prüfen:&#039;&#039;&#039; Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.&lt;/div&gt;</summary>
		<author><name>Hzayn</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3070</id>
		<title>DCV 2023 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2023_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=3070"/>
		<updated>2023-10-24T07:00:00Z</updated>

		<summary type="html">&lt;p&gt;Hzayn: /* Aufgabe: Email Regex aka. Regbert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die [https://learn.microsoft.com/en-us/dotnet/api/system.string?view=net-7.0 String] Operationen {{JSL|[i]}}, {{JSL|ToCharArray()}}, {{JSL|IndexOf(...)}}, {{JSL|Replace(...)}}, {{JSL|Insert(...)}}, {{JSL|Split(...)}} und {{JSL|Substring(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode.&lt;br /&gt;
# Sortiere die Namen nach Länge aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen nach Länge absteigend (Descending)&lt;br /&gt;
# Sortiere die Namen lexikographisch aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen lexikographisch absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|CompareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.CompareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Jovo&amp;quot;, &amp;quot;Mehmet&amp;quot;, &amp;quot;Sven&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Selina&amp;quot;, &amp;quot;Niklas&amp;quot;, &amp;quot;Ali&amp;quot;, &amp;quot;Fabienne&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Sandro&amp;quot;, &amp;quot;Hassan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Dimitri&amp;quot;, &amp;quot;Patrick&amp;quot;, &amp;quot;Kerem&amp;quot;, &amp;quot;Timo&amp;quot;, &amp;quot;Gheorghe&amp;quot;, &amp;quot;Mohammed&amp;quot;, &amp;quot;Cemal&amp;quot;, &amp;quot;Simon&amp;quot;, &amp;quot;Fabian&amp;quot;, &amp;quot;Dario&amp;quot;, &amp;quot;Michael&amp;quot;, &amp;quot;Erik&amp;quot;, &amp;quot;David&amp;quot;, &amp;quot;Riccardo&amp;quot;, &amp;quot;Eren&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.ToCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|Ressources.StringRessources.getText()}}.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Denke daran, die Ressources als Reference zu dem Projekt zu geben... Im Zweifelsfall frage Hassan ;-)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert  ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;@drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;drlue.at&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@drlue&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch(&amp;quot;asdf@microsoft.c&amp;quot;, regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Knobelaufgabe:&#039;&#039;&#039; Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Fakultät ===&lt;br /&gt;
Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.&amp;lt;/cite&amp;gt;&amp;lt;ref&amp;gt;https://de.wikipedia.org/wiki/Fakult%C3%A4t_(Mathematik)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fac(n) = n * fac(n -1)&lt;br /&gt;
fac(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
 &#039;&#039;&#039;Bsp.:&#039;&#039;&#039; fac(5) =&amp;gt; 5 * 4 * 3 * 2 * 1 =&amp;gt; 120&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Funktion: Permutation ===&lt;br /&gt;
Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Tip um Ergebnis zu prüfen:&#039;&#039;&#039; Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.&lt;/div&gt;</summary>
		<author><name>Hzayn</name></author>
	</entry>
</feed>