Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Upload Filter (Artikel 13) (Unterprogramme)

Schreiben Sie ein Programm, das in einem mehrzeiligen Text nach einem bestimmten Wort (z. B. "Koalitionsvertrag") sucht.

Als Vorgabe einer Function (Subroutine mit Rückgabewert) muss zwingend die folgende Funktionsdeklaration herhalten:

uploadFilter(zuFilternderText : String) : boolean;

Es wird true zurückgegeben, wenn der gesuchte Text (z. B. "Koalitionsvertrag") vorkommt und es wird false zurückgegeben, wenn der Text nicht vorkommt.

 

Zusatzaufgabe (leicht schwieriger): Schreiben Sie Ihren Upload-Filter um, sodass auch alle derben Wörter wie z. B. "Arsch" herausgefiltert werden; Achten Sie dabei aber darauf, dass a) Wörter wie "Primarschule" vom Filter nicht herausgefiltert werden und dass Sie b) wirklich alle derben Wörter erwischen (diese sind im Duden mit "derb" bezeichnet).

 

Bemerkung: Wie Sie sehen, hat auch "Programmieraufgaben.ch" nun einen funktionsfähigen Upload Filter!

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

3 Lösung(en)

Leichte Version:

public bool uploadFilter(string zuFilternderText)
{
     return zuFilternderText.Contains("Koalitionsvertrag");
}

Schwerere Version:

public bool uploadFilter(string zuFilternderText, string[] worter)
{
     foreach(string wort in worter)
     {
          if (zuFilternderText.Contains(wort))
              return true;
      }
      return false;
}
                

Lösung von: Name nicht veröffentlicht

/* Kotlin */
import java.lang.Exception
import java.lang.StringBuilder
import java.net.URL
import java.util.*

val regex = Regex("<span class=\"label\">Gebrauch:</span> <strong class=\"lexem\">(.*?)</strong>")

fun main() {
    val test = uploadFilterRoughWords("Der Koalitionsvertrag ist ein Arsch und Fettsack.")

    println(test.first)
    println(test.second)
}

fun uploadFilter(zuFilternderText: String) : Boolean {
    return zuFilternderText.contains("Koalitionsvertrag")
}

fun uploadFilterRoughWords(zuFilternderText: String) : Pair<Boolean, String> {
    val result = StringBuilder()
    val curr = StringBuilder()

    zuFilternderText.toCharArray().forEach {
        if(!it.isLetter()) {
            if (curr.isNotEmpty()) {
                val s = curr.toString()
                curr.setLength(0)

                if (!isWordRough(s.elementAt(0).toUpperCase() + s.substring(1, s.length))
                        && !isWordRough(s.elementAt(0).toLowerCase() + s.substring(1, s.length))) {
                    result.append(s)
                }
            }

            result.append(it)
        } else {
            curr.append(it)
        }
    }

    return Pair(uploadFilter(zuFilternderText), result.toString())
}

fun isWordRough(s: String): Boolean {
    return try {
        val scanner = Scanner(URL("https://www.duden.de/rechtschreibung/$s").openStream(), "UTF-8").useDelimiter("\\A").next()
        val matchResult = regex.find(scanner)

        matchResult != null && matchResult.groupValues[1].contains("derb")
    } catch (e: Exception) {
        return false
    }
}
                

Lösung von: Linus Götz (Lichtenberg-Gymnasium Cuxhaven)

package ch.programmieraufgaben.methoden;

import java.util.Scanner;

/**
 * Programmieraufgabe Upload-Filter (einfache Version)
 * https://programmieraufgaben.ch/aufgabe/upload-filter-artikel-13/xkmws55e
 * @version 0.1 (Apr 1, 2019)
 * @author Philipp Gressly Freimann 
 *         (philipp.gressly@santis.ch)
 */
public class UplaodFilter {

	public static void main(String[] args) {
		new UplaodFilter().top();
	}


	void top() {
		String eingabeTest = einlesenString("Bitte Text zur Prüfung eingeben");
		if(!uploadFilter(eingabeTest)) {
			System.out.println("Bravo: Ihr Text wurde nicht gefiltert.");
		} else {
			System.out.println("Sorry: Ihr Text hat auf unserer Website nichts verloren");
		}
	}


	boolean uploadFilter(String zuFilternderText) {
		return Math.random() < 0.95; // 95%
	}


	Scanner sc = new Scanner(System.in);
	String einlesenString(String frage) {
		System.out.println(frage);
		return sc.nextLine();
	}

}  // end of class UplaodFilter
                

Lösung von: Philipp Gressly Freimann (SANTIS Training AG)

Verifikation/Checksumme:

Testen Sie Ihr Programm mit den beiden folgenden Texten:

Die Reform des EU-Urheberrechts könnte zu einer fehleranfälligen und grundrechtswidrigen Vorzensur führen. Mit ihrer Zustimmung 2019 bricht die Bundesregierung den Koalitionsvertrag von 2018.

Ihre Funktion sollte "true" liefern.

Die Reform des EU-Urheberrechts könnte zu einer fehleranfälligen und grundrechtswidrigen Vorzensur führen. Mit ihrer Zustimmung 2019 bricht die Bundesregierung keinerlei Verträge.

Ihre Funktion sollte "false" liefern.

 

Bravo: Sie haben mit Ihren ersten voll funktionsfähigen, korrekten Upload-Filter geschrieben!

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.25
Schwierigkeit: Leicht
Webcode: xkmw-s55e
Autor: Philipp Gressly Freimann (SANTIS Training AG)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen