Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Kontrabass (Zeichenketten)

Und jetzt alle:

Drei Chinesen mit dem Kontrabass in Noten

Gut, in der Schweiz ist die Melodie vielleicht eine andere, aber hier geht es allein um das Sprachspiel.

Das Lied soll in den einzelnen Strophen mit nur einem Vokal oder einem Diphtong (einem Doppellaut) gesungen werden.

Der Original-Text lautet:

Drei Chinesen mit dem Kontrabass
saßen auf der Straße und erzählten sich was.
Da kam die Polizei, fragt: „Was ist denn das?“
Drei Chinesen mit dem Kontrabass.

Beispiel 1: Die Strophe mit »A«:

Dra Chanasan mat dam Kantrabass
saßen af dar Straßa and arzahlten sach was.
Da kam da Palaza, fragt: „Was ast dann das?“
Dra Chanasan mat dam Kantrabass.

Beispiel 2: mit »Ö«:

Drö Chönösön möt döm Köntröböss
sößön öf dör Strößö önd örzöhltön söch wös.
Dö köm dö Pölözö, frögt: „Wös öst dönn dös?“
Drö Chönösön möt döm Köntröböss.

Beispiel 3: Mit Diphthong »AU«:

Drau Chaunausaun maut daum Kauntraubauss
saußaun auf daur Straußau aund aurzaultaun sauch waus.
Dau kaum dau Paulauzau, fraugt: „Waus aust daunn daus?“
Drau Chaunausaun maut daum Kauntraubauss.

Zur Aufgabe:

Verfassen Sie eine Routine, die einen Vokal oder Diphthong entgegennimmt, und die entsprechende Strophe mit nur diesem Laut als Strophe ausgibt.
Beachten Sie hierbei, dass Diphthonge lang sind, und kein folgendes »h« benötigen; daher sollte das »erzählten« des Textes bei Eingabe eines Dipthongs »eirzeiltein/aurzaultaun/eurzeulteun« ausgeben, nicht aber »eirzeihltein/aurzauhltaun/eurzeuhlteun«.

Erlaubte Vokale seien: a, e, i, o, u, ä, ö, ü sowie die Diphtonge au, ei und eu.
In allen anderen Fällen (bei fehlerhafter Eingabe) soll die Routine als Standard den Original-Text ausgeben.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

12 Lösung(en)

//gleich mal noch bisschen über regexp gelernt ^^


alert( replace("ei") )

function replace(vokal) {
    Lied = 'Drei Chinesen mit dem Kontrabass\nsaßen auf der Straße und erzählten sich etwas.\nDa kam die Polizei, fragt: "Was ist denn das?"\nDrei Chinesen mit dem Kontrabass\n'
    vokale = "eu|au|ei|ie|a|e|i|o|u|ä|ö|ü"
    
    if( vokale.indexOf(vokal) >- 1 )
        Lied = Lied.replace( RegExp(vokale ,"g"), vokal )
    
    Lied = Lied.replace( RegExp("euh|auh|eih|ieh","g"), vokal )
    
    return Lied
}
                

Lösung von: Alex Dev (Symbroson)

//ist eigentlich universell anwendbar

import re

def replace(vokal):
    Lied = 'Drei Chinesen mit dem Kontrabass\nsaßen auf der Straße und erzählten sich etwas.\nDa kam die Polizei, fragt: "Was ist denn das?"\nDrei Chinesen mit dem Kontrabass\n'
    vokale = "eu|au|ei|ie|a|e|i|o|u|ä|ö|ü"

    if( vokale.find(vokal) > -1 ):
        Lied = re.sub( vokale, vokal, Lied )
        Lied = re.sub( "euh|auh|eih|ieh", vokal, Lied )
        
    return Lied

print( replace( input("Vokal: ") ) )
                

Lösung von: Alex Dev (Symbroson)

import java.awt.List;
import java.util.ArrayList;
import java.util.Scanner;

public class Kontrabass {

	public static void main(String[] args) {

		char x = ' ';
		ArrayList<String> worte = new ArrayList<String>();
		int alZaehler = 0;

		System.out.println("Bitte Text eingeben!");

		// Aufforderung zur Texteingabe, wartet auf '#' als Ende des Textes

		while (x != '#') {
			String urSprungTextToChar;

			Scanner urSprung = new Scanner(System.in);

			urSprungTextToChar = urSprung.nextLine();
			char[] kontrollBuchstabe = urSprungTextToChar.toCharArray();

			String wortUmgewandelt = "";

			// Den eingegebenen Text zerlegen, aendern und wieder
			// zusammenstellen
			for (int a = 0; a <= kontrollBuchstabe.length - 1; a++) {

				// Kontrolle auf Vokale
				switch (kontrollBuchstabe[a]) {

				case 'e':
					kontrollBuchstabe[a] = 'a';
					wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
					break;
				case 'E':
					kontrollBuchstabe[a] = 'A';
					wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
					break;

				case 'i':
					kontrollBuchstabe[a] = 'a';
					wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
					break;
				case 'I':
					kontrollBuchstabe[a] = 'A';
					wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
					break;

				case 'o':
					kontrollBuchstabe[a] = 'a';
					wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
					break;
				case 'O':
					kontrollBuchstabe[a] = 'A';
					wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
					break;

				case 'u':
					kontrollBuchstabe[a] = 'a';
					wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
					break;
				case 'U':
					kontrollBuchstabe[a] = 'A';
					wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
					break;

				default:
					wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];

				}

			}

			// Array mit dem geaenderten Text erstellen
			worte.add(wortUmgewandelt);
			x = kontrollBuchstabe[kontrollBuchstabe.length - 1];
		}

		// Ausgabe des geaenderten Textes
		System.out.println(worte.size());

		for (alZaehler = 0; alZaehler < worte.size(); alZaehler++) {
			System.out.println(worte.get(alZaehler));
		}

	}

}

                

Lösung von: Alex Mahlknecht (Privater Unterricht)

import sys
vokale = ["a", "e", "i", "o", "u", "A", "E" , "I", "O", "U", "au", "ei", "eu", "ä", "ö", "ü"] # Alle erlaubten Zeichen in einer Liste
ersetzen = ["a", "e", "i", "o", "u", "A", "E" , "I", "O", "U"] #Zu ersetzende Buchstaben
lied = 'Drei Chinesen mit dem Kontrabass saßen auf der Straße und erzählten sich was. Da kam die Polizei, fragt: „Was ist denn das?“ Drei Chinesen mit dem Kontrabass.' #Das normale Lied
neueslied = '' #Das spätere neue Lied

eingabe = input ("Welchen Vokal/Diphtong möchten sie nutzen? ") #Wahl des Vokals/Diphtongs
if eingabe in vokale: #Wenn die Eingabe ein valides Zeichen ist..
	for char in lied: #Für jeden Buchstaben im Lied
		if char in ersetzen: #Wenn der nächste Buchstabe ein Vokal ist...
			if notnext == 0: #Siehe übernächste Zeile
				neueslied = neueslied + eingabe #Füge den eingegebenen Vokal dem neuen Lied hinzu
				notnext = 1 #Zähler um zu verhindern, dass aus "Drei" "Dreueu" wird, so wird immer nur ein Vokal nacheinander ersetzt
		else: #Wenn der nächste Buchstabe KEIN Vokal ist...
			neueslied = neueslied + char #Füge dem neuen Lied den Buchstaben aus dem alten Lied hinzu
			notnext = 0 #Setze den Zähler zurück
else: #Wenn die Benutzereingabe nich valid ist...
	print("Nicht valide Eingabe, valid sind: " + str(vokale)) #Informiere den Benutzer, dass er einen falschen Buchstaben eingegeben hat, zeige welche Buchstaben valid sind
	print(lied) #Gib das alte Lied aus
	sys.exit(1) #Beende das Programm
print(neueslied) #Gib das neue Lied aus
sys.exit(0) #Beende das Programm


                

Lösung von: Patrick L. (Gymnasium Friedrich II)

'30.5.2017 - PowerBasic 10

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN () AS LONG

    DIM Lied AS STRING
    DIM Vokale(10) AS STRING
    DIM Ersetzen AS STRING
    DIM x AS LONG

    ARRAY ASSIGN Vokale() = "a","e","i","o","u","ä","ö","ü","au","ei","eu"

    Ersetzen = LCASE$(INPUTBOX$("Bitte Vokal angeben:" & $CRLF & "(oder Diphthong: au/ei/eu)","Kontrabass"))

    IF LEN(TRIM$(Ersetzen)) THEN

        Lied = "Drei Chinesen mit dem Kontrabass" & $CRLF & _
               "saßen auf der Straße und erzählten sich was." & $CRLF & _
               "Da kam die Polizei, fragt: „Was ist denn das?“" & $CRLF & _
               "Drei Chinesen mit dem Kontrabass."

        ARRAY SCAN Vokale(), = Ersetzen, TO x
        IF x THEN
            REPLACE ANY "aeiouäöü" WITH "||||||||" IN Lied
            REPLACE "||" WITH Ersetzen IN Lied
            REPLACE "|" WITH Ersetzen IN Lied
            IF LEN(Ersetzen) > 1 THEN
                REPLACE Ersetzen & "h" WITH Ersetzen IN Lied
            END IF
            MSGBOX Lied,,EXE.NAME$
        ELSE
            MSGBOX Lied,,EXE.NAME$
        END IF

    END IF 'Len(Ersetzen)

END FUNCTION                     
                

Lösung von: Markus Sägesser (keine)

'30.5.2017 - PowerBasic 10

'Variante 2 mit Schleifen anstelle integrierter Replace-Funktion

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN () AS LONG

    DIM Lied AS STRING
    DIM Lied_Neu AS STRING
    DIM Vokale(10) AS STRING
    DIM Ersetzen AS STRING
    DIM zwV AS BYTE
    DIM x AS LONG
    DIM i AS INTEGER

    ARRAY ASSIGN Vokale() = "a","e","i","o","u","ä","ö","ü","au","ei","eu"

    Ersetzen = LCASE$(INPUTBOX$("Bitte Vokal angeben:" & $CRLF & "(oder Diphthong: au/ei/eu)","Kontrabass"))

    IF LEN(TRIM$(Ersetzen)) THEN

        Lied = "Drei Chinesen mit dem Kontrabass" & $CRLF & _
               "saßen auf der Straße und erzählten sich was." & $CRLF & _
               "Da kam die Polizei, fragt: „Was ist denn das?“" & $CRLF & _
               "Drei Chinesen mit dem Kontrabass."

        ARRAY SCAN Vokale(), = Ersetzen, TO x
        IF x THEN
            FOR i = 1 TO LEN(Lied)
                IF RETAIN$(MID$(Lied,i,1),ANY "aeiouäöü")=MID$(Lied,i,1) THEN
                    IF zwV <> 1 THEN
                        Lied_Neu += Ersetzen
                        zwV = 1
                    END IF 'zwV <> 1
                ELSE
                    IF NOT(RIGHT$(Lied_Neu,2) & MID$(Lied,i,1) = Ersetzen & "h")  THEN
                        Lied_Neu += MID$(Lied,i,1)
                        zwV = 0
                    END IF
                END IF 'Retain$(Mid$...)
            NEXT i
            MSGBOX Lied_Neu,,EXE.NAME$ & " - " & Ersetzen
        ELSE
            MSGBOX Lied,,EXE.NAME$
        END IF

    END IF 'Len(Ersetzen)

END FUNCTION  
                

Lösung von: Markus Sägesser (keine)

//Farben
        static void ueberschrift()
        {
            Console.ForegroundColor = ConsoleColor.Magenta;
            Console.BackgroundColor = ConsoleColor.Gray;
        }
        static void gruen()
        {
            Console.ForegroundColor = ConsoleColor.DarkGreen;
        }
        static void rot()
        {
            Console.ForegroundColor = ConsoleColor.DarkRed;
        }
        static void nix()
        {
            Console.ResetColor();
        }



        static void Main(string[] args)
        {
            ueberschrift();
            Console.WriteLine("\t"+"Drei Chinesen mit nem Kontrabass"+"\n");
            nix();
            // Das Gedicht
            string chinese = "Drei Chinesen mit nem Kontrabass saßen auf der Straße und erzählten sich was. Da kam die Polizei, fragt: Was ist denn das? Drei Chinesen mit dem Kontrabass.";

            //welcher Vokal soll genutzt werden
            string vokal;
            do
            {
                gruen();
                Console.Write("Durch welchen Vokal wollen Sie ersetzen? ");
                vokal = Convert.ToString(Console.ReadLine());
            } while (vokal != "a" && vokal != "e" && vokal != "i" && vokal != "o" && vokal != "u" && vokal != "ä" && vokal != "ö" && vokal != "ü");

            //Vokale werden durch die Eingabe ersetzt
            chinese = chinese.Replace("a", vokal);
            chinese = chinese.Replace("e", vokal);
            chinese = chinese.Replace("i", vokal);
            chinese = chinese.Replace("o", vokal);
            chinese = chinese.Replace("u", vokal);
            chinese = chinese.Replace("ä", vokal);
            chinese = chinese.Replace("ö", vokal);
            chinese = chinese.Replace("ü", vokal);
            chinese = chinese.Replace("ie", vokal);
            chinese = chinese.Replace("ei", vokal);
            chinese = chinese.Replace("auh", vokal);
            chinese = chinese.Replace("euh", vokal);
            chinese = chinese.Replace("eih", vokal);
            chinese = chinese.Replace("ieh", vokal);

            //Ausgabe des geänderten Gedichtes
            Console.WriteLine();
            rot();
            Console.WriteLine(chinese);
        }
                

Lösung von: Goo Muck (Uni)

# Kontrabass
# Author: Apop85

import re

strophe='''Drei Chinesen mit dem Kontrabass 
sassen auf der Strasse und erzählten sich was. 
Da kam die Polizei, fragt: "Was ist denn das?" 
Drei Chinesen mit dem Kontrabass.'''

replace=['a','e','i','o','u','ä','ö','ü']
replace_with=['a','e','i','o','u','ä','ö','ü','au','ei','eu']

def choose_option():
  options=["(1) Replace with single vocal", "(2) Replace with diphtong", "(3) Exit"]
  for item in options:
    print(item)
  choose=int(input('Choose option: '))
  if choose != "" and 0 < choose <= len(options)-1:
    print('Choose letter from following list:')
    replace_list=[item for item in replace_with if len(item) == choose]
    for i in range(len(replace_list)):
      print(str(i+1)+'. '+replace_list[i])
    choose=int(input('Choice: '))
    if 0 < choose <= len(replace_list):
      replace_it(replace_list[choose-1])
  elif choose == 3:
    exit()
  else:
    print('Invalid option')

def replace_it(replace_with):
  print(replace_with)
  if len(replace_with) == 2:
    search_pattern=re.compile(r'([AEIOUaeiouäöüÄÖÜ]+)([h]?)')
  else:
    search_pattern=re.compile(r'([AEIOUÄÖÜaeiouäöü]+)')
  result=search_pattern.sub(replace_with,strophe)
  print(result)

choose_option()
                

Lösung von: Name nicht veröffentlicht

// NET Core 3.x


namespace CS_Aufgabe_Kontrabass
{
    class Program
    {
        static void Main()
        {
            var s =
                "Drei Chinesen mit nem Kontrabass " +
                "saßen auf der Straße und erzählten sich was." +
                "Da kam die Polizei, fragt: Was ist denn das? Drei" +
                "Chinesen mit dem Kontrabass.";

            var v = "au";
            var p = @"au|eu|ei|ie|a|e|i|o|u|ä|ö|ü";

            if (p.Contains(v))
                s = new Regex(@"auh|eih|euh|ieh").Replace(
                    new Regex(p).Replace(s, v), v);

            Console.WriteLine(s);
        }
    }
}
                

Lösung von: Jens Kelm (@JKooP)

// C++ 14 | VS-2022
#include <iostream>
#include <regex>

auto get_replaced_text(const std::string& txt, const std::string& rep) {
    const std::regex p1{ "au|eu|ei|ie|a|e|i|o|u|ä|ö|ü" };
    const std::regex p2{ "auh|eih|euh|ieh" };
    const auto r1{ std::regex_replace(txt, p1, rep) };
    const auto r2{ std::regex_replace(r1, p2, rep) };
    return r2;
}

int main() {
    const std::string rep{ "ei" };
    const std::string txt{ "Drei Chinesen mit dem Kontrabass saßen auf der Straße und erzählten sich was. Da kam die Polizei, fragt: 'Was ist denn das ?' Drei Chinesen mit dem Kontrabass." };
    const auto rt{ get_replaced_text(txt, rep) };
    std::locale::global(std::locale("German_germany.UTF-8"));
    std::cout << rt << "\n";
}
                

Lösung von: Jens Kelm (@JKooP)

from re import sub as rs
v,vokale,s=input('Welcher Vokal soll genutzt werden? '),'[äöüaouieÄÖÜAOUIE]','Drei Chinesen mit dem Kontrabass \nsaßen auf der Straße und erzählten sich was.\nDa kam die Polizei, fragt: „Was ist denn das?\nDrei Chinesen mit dem Kontrabass\n'
print(rs(v+v,v,rs(vokale,v,s)) if len(v)==1 else rs(f'{v+v}|{v}+h',v,rs(vokale,v,s)))
                

Lösung von: rob ert (tub)

' VBA
Function GetReplacedText(txt$, rep$)
    With CreateObject("VBScript.RegExp")
        .Pattern = "au|eu|ei|ie|a|e|i|o|u|ä|ö|ü"
        .Global = True
        m$ = .Replace(txt, rep)
        With CreateObject("VBScript.RegExp")
            .Pattern = "auh|eih|euh|ieh"
            .Global = True
            GetReplacedText = .Replace(m, rep)
        End With
    End With
End Function

Sub Main()
    Const rep$ = "ei"
    Const txt$ = "Drei Chinesen mit dem Kontrabass saßen auf der Straße und erzählten sich was. Da kam die Polizei, fragt: 'Was ist denn das ?' Drei Chinesen mit dem Kontrabass."
    Debug.Print GetReplacedText(txt, rep)
End Sub
                

Lösung von: Jens Kelm (@JKooP)

Verifikation/Checksumme:

Eingabe »A«:

Dra Chanasan mat dam Kantrabass [...] arzahlten sach was [...]

Eingabe »Ü«:

Drü Chünüsün müt düm Küntrübüss [...] ürzühltün süch wüs [...]

Eingabe »AU«:

Drau Chaunausaun maut daum Kauntraubauss [...] aurzaultaun sauch waus [...]

Keine Eingabe:

Drei Chinesen mit dem Kontrabass [...] erzählten sich was [...]

Eingabe »X«:

Drei Chinesen mit dem Kontrabass [...] erzählten sich was [...]

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.5
Schwierigkeit: Leicht
Webcode: xk5w-4mq7
Autor: ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen