Die Mathe-Redaktion - 17.09.2019 16:40 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte / Top 15
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
Listenpunkt? im neuen Schwätz
ListenpunktWerde Mathe-Millionär!
ListenpunktAnmeldung MPCT Sept.
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 568 Gäste und 18 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » C: Vorkommen von Buchstaben in char-array zählen.
Druckversion
Druckversion
Autor
Schule J C: Vorkommen von Buchstaben in char-array zählen.
Zrebna
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 25.09.2018
Mitteilungen: 193
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2019-05-21


Hi!

Es geht um folgende Aufgabe:
Ich möchte bzgl. dem char array[] = "Hello World!" ausgeben,
wie oft jeweils, alle Buchstaben vorkommen - hierbei darf nicht
zwischen Groß-und Kleinbuchstaben unterschieden werden.
Die Ausgabe sollte sein:
D: 1
E: 1
H: 1
L: 3
O: 2
R: 1
W: 1

Mein erster Versuch:
C
  1. #include <stdio.h>
  2.  
  3.  
  4. int main() {
  5. char text[] = "Hello World!";
  6. int i, counter;
  7. char alphabetGross[26]; // Array für Großbuchstaben
  8. char alphabetKlein[26]; // Array für Kleinbuchstaben
  9. int buchstabenZaehler[26];
  10. int pos = 0; // Buchstaben_Position in unserem Counter-Alphabet
  11. int b = 65; // A
  12. int low = 97; // a
  13.  
  14. for (pos = 0; pos < 26; pos++, b++, low++) {
  15. alphabetGross[pos] = b;
  16. alphabetKlein[pos] = low;
  17. buchstabenZaehler[pos] = 0;
  18. //printf("alphabetGross[%d]: %c\n", pos, alphabetGross[pos]);
  19. //printf("alphabetKlein[%d]: %c\n", pos, alphabetKlein[pos]);
  20. //counter = 0;
  21. for (i = 0; text[i] != '\0'; i++) {
  22. if (text[i] == alphabetGross[pos] || text[i] == alphabetKlein[pos]) {
  23. buchstabenZaehler[pos]++;
  24. printf("%c: %d\n", alphabetGross[pos], buchstabenZaehler[pos]);
  25. }
  26. }
  27. }
  28.  
  29. return 0;
  30. }



Mir ist klar, dass das so noch an etlichen Stellen hakt.
Wie kann ich das Programm bei "Treffern" nur einmal iterieren lassen?

Momentan sieht der Output so aus:


Generell fühle ich mich bei dieser Aufgabe offensichtlich an mehreren Stellen überfordert - daher wäre ich für erste Hinweise, wie ich das Problem Schritt für Schritt angehen könnte sehr dankbar.^^

Lg,
Zrebna




  Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 26839
Aus: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2019-05-22


Hi Zrebna

Man kann das beliebig kompliziert machen — oder halt einfach.

Du brauchst nur ein Array Buchstaben der Länge 26, um die Häufigkeiten der Buchstaben zu zählen (natürlich mit 0en an allen Positionen initialisiert).
Nun klappertst du text ab. Ist text[i] ein Kleinbuchstabe, dann zählst du an der Stelle Buchstaben[text[i]-'a'] um 1 hoch, ist es ein Großbuchstabe, dann zählst du an der Stelle Buchstaben[text[i]-'A'] um 1 hoch. Fertig, die Umsetzung überlasse ich dir.

Gruß vom ¼


-----------------
Bild



  Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 978
Aus: Thüringen,Erfurter Raum
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2019-05-22


Man könnte noch einfacher vorgehen.
Es soll nicht unterschieden werden....
ASCI ,

A-Z=65-90
a-z=97-122

Die Distanz ist 32

Man spannt ein Feld zum zählen auf ,F[1..26]

Errechnet vom Zeichen den ASCI-Wert MOD 32 =X  , F[X]+=1

Das Kürzeste in Basic ist mir gelungen mit:

DIM AS UBYTE i
DIM AS STRING Z
DIM F(26) AS UBYTE
Z="Hello World"
FOR i=1 TO LEN(Z)
F(ASC(MID(Z,i,1)) MOD 32)+=1
NEXT i
FOR i=1 TO 26
IF F(i)>0 THEN PRINT "Buchstabe: ";CHR(i+64);" ";F(i)
NEXT i
SLEEP

Ausgabe:
Buchstabe: D 1
Buchstabe: E 1
Buchstabe: H 1
Buchstabe: L 3
Buchstabe: O 2
Buchstabe: R 1
Buchstabe: W 1





-----------------
Pech in der Liebe , Glück im Verlieren !!!



  Profil  Quote  Link auf diesen Beitrag Link
Yggdrasil
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 01.07.2004
Mitteilungen: 844
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2019-05-22


Hallo Zrebna,

die Verschachtelung der For-Schleifen in deinem Code führt zu
Problemen. Eigentlich möchtest du ja drei Dinge durchführen.

1. Initialisierung der Arrays
2. Zählen der Buchstabenvorkommen
3. Ausgabe der Zählung.

Derzeit hast du diese Dinge durchmischt, wodurch es beispielsweise zur mehrfachen Ausgabe von 'L' kommt.
Ich würde dir empfehlen die drei Schritte im Code hintereinander auszuführen.

Wie viertel schon erwähnte, kann man zwei der drei Arrays (alphabetGross und alphabetKlein) auch weglassen. Man muss sich nur vergegenwärtigen dass die 26 Buchstaben im char-Array 2*26 direkt aufeinander folgende Zahlen sind.

Gruß Yggdrasil



  Profil  Quote  Link auf diesen Beitrag Link
Zrebna
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 25.09.2018
Mitteilungen: 193
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2019-05-22


2019-05-22 02:11 - viertel in Beitrag No. 1 schreibt:
Hi Zrebna

Man kann das beliebig kompliziert machen — oder halt einfach.

Du brauchst nur ein Array Buchstaben der Länge 26, um die Häufigkeiten der Buchstaben zu zählen (natürlich mit 0en an allen Positionen initialisiert).
Nun klappertst du text ab. Ist text[i] ein Kleinbuchstabe, dann zählst du an der Stelle Buchstaben[text[i]-'a'] um 1 hoch, ist es ein Großbuchstabe, dann zählst du an der Stelle Buchstaben[text[i]-'A'] um 1 hoch. Fertig, die Umsetzung überlasse ich dir.

Gruß vom ¼

Hi!

Danke schon mal - den ersten Teil habe ich wohl in meinem neuen Versuch (folgt gleich) so versucht wie du, aber den zweiten Teil anders gemacht.
Nun wird zwar jedes Vorkommen richtig gezählt, aber nicht so, wie gewünscht:
C
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. char text[] ="Hello World!";
  5.  
  6. char alph[26] = {0};
  7. int i, j, counter;
  8.  
  9. for(i = 0; text[i] != '\0'; i++) {
  10. counter = 0;
  11. for(j = 0; j < 26; j++) {
  12. if(text[i] == 'A' + j || text[i] == 'a' + j) {
  13. counter++;
  14. //counter[j]++;
  15. printf("%c: %d\n",'A' + j, counter);
  16. }
  17. }
  18. // printf("%c: %d",'A' + j, counter);
  19. }
  20.  
  21.  
  22. return 0;
  23. }

Output:





  Profil  Quote  Link auf diesen Beitrag Link
Zrebna
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 25.09.2018
Mitteilungen: 193
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, vom Themenstarter, eingetragen 2019-05-22


2019-05-22 10:09 - Yggdrasil in Beitrag No. 3 schreibt:
Hallo Zrebna,


Wie viertel schon erwähnte, kann man zwei der drei Arrays (alphabetGross und alphabetKlein) auch weglassen. Man muss sich nur vergegenwärtigen dass die 26 Buchstaben im char-Array 2*26 direkt aufeinander folgende Zahlen sind.

Gruß Yggdrasil


Hallo!
Danke für den gesamten Input:)
Speziell bzgl. dem zitiertem:
Ja, ich denke, dass die Idee von viertel und dir die beste ist und es leuchtet mir nun ein - siehe oben geposteter Code.

Ansonsten auch Danke an pzktupel - bei deiner Idee blicke ich nur den ersten Teil, aber trotzdem thanks.

Ok, ich versuche nochmal vermehrt über das Problem nachzudenken und update dann den Thread, sobald ich "weiter" bin.
Verm. erst am Wochenende, da die nächsten beiden Tage nicht online...

Danke schon mal an alle Comments so weit:)

Lg,
Zrebna



  Profil  Quote  Link auf diesen Beitrag Link
Zrebna
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 25.09.2018
Mitteilungen: 193
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, vom Themenstarter, eingetragen 2019-05-22


2019-05-22 02:11 - viertel in Beitrag No. 1 schreibt:
Hi Zrebna


Nun klappertst du text ab. Ist text[i] ein Kleinbuchstabe, dann zählst du an der Stelle Buchstaben[text[i]-'a'] um 1 hoch, ist es ein Großbuchstabe, dann zählst du an der Stelle Buchstaben[text[i]-'A'] um 1 hoch. Fertig, die Umsetzung überlasse ich dir.

Gruß vom ¼

In der Zwischenzeit noch ggf. eine Frage hierzu:

Warum - 'A' bei Grossbuchstabe?
A ist doch 65.
Nehmen wir in meinem Text direkt text[0] = 'H'.
H wäre 72 und die Differenz demnach 7.
Nun wären wir also an der Stelle text[7]?
Das wäre 'r' in meinem Beispieltext.

Mir ist klar, dass du was völlig anderes gemeint hast, was ich einfach noch nicht schnalle - daher, könntest du es evtl. an einem einfachen Beispiel versuchen zu erklären?

Lg,
Zrebna



  Profil  Quote  Link auf diesen Beitrag Link
hyperG
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.02.2017
Mitteilungen: 744
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, eingetragen 2019-05-22


Die Sprache ist egal, da es für eine derart primitive Aufgabe jede geeignet ist.

Hier in JavaScript per kostenlosen Iterationsrechner:
LINK mit Code





Gliederung lautet (was der universelle Iterationsrechner schön zeigt):
a) Initialisierung (Init:)
Input-Text + Array definieren (Basic setzt alles automatisch zu 0; andere Sprachen müssen das definieren!)

b) 1. Schleife zum Zählen der "gleichartigen Buchstaben"
Gleichartig bedeutet gleicher Index: was bei Basic 1...Len() ist,
lautet in 0-indizierten Sprachen 0...Len()-1
Was in Basic "gleichartiger Index" mit ASC(MID(Z,i,1)) MOD 32 erfolgt
ist in Javascript
abs(x.substr(i,1).toUpperCase().charCodeAt(0)-65)
Sonderzeichen wie ! oder Leerzeichen werden damit größer als die 26 Buchstaben und wandern nach hinten

c) 2. Schleife zum Ausgeben der Anzahl pro Buchstabe, wobei die Buchstaben mit Anzahl 0 (also ganze Zeile) ignoriert werden soll.

Du scheinst Arrays zu meiden und versuchst pro Input-Text-Buchstaben
alle vorhandenen Buchstaben zählen zu wollen ->
- ohne Array geht zwar auch, ABER dann anders herum (deshalb kommt bei Dir immer nur 1 heraus, weil er sich selbst zählt!)
1. Schleife alle 26 Buchstaben durchgehen
und dann in 2. Schleife die Input-Text-Buchstaben durchgehen und bei Übereinstimmung aufaddieren. Erst hinter der inneren Schleife wird ausgegeben.

Nachteil Deines Algorithmus: statt konstant 2 Schleifen, hast Du
26 * Stringlänge Durchgänge!
Hier 26 *12 =312 Stück.



  Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 26839
Aus: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, eingetragen 2019-05-23


2019-05-22 19:04 - Zrebna in Beitrag No. 6 schreibt:
2019-05-22 02:11 - viertel in Beitrag No. 1 schreibt:
Hi Zrebna


Nun klappertst du text ab. Ist text[i] ein Kleinbuchstabe, dann zählst du an der Stelle Buchstaben[text[i]-'a'] um 1 hoch, ist es ein Großbuchstabe, dann zählst du an der Stelle Buchstaben[text[i]-'A'] um 1 hoch. Fertig, die Umsetzung überlasse ich dir.

Gruß vom ¼

In der Zwischenzeit noch ggf. eine Frage hierzu:

Warum - 'A' bei Grossbuchstabe?
A ist doch 65.
Nehmen wir in meinem Text direkt text[0] = 'H'.
H wäre 72 und die Differenz demnach 7.
Nun wären wir also an der Stelle text[7]?
Nein, nicht text[7], sondern Buchstaben[7], und das ist die Position des H im Zählfeld. H ist der 8. Buchstabe im Alphabet, die Indexzählung beginnt aber bei 0.
Das wäre 'r' in meinem Beispieltext.

Mir ist klar, dass du was völlig anderes gemeint hast, was ich einfach noch nicht schnalle - daher, könntest du es evtl. an einem einfachen Beispiel versuchen zu erklären?

Lg,
Zrebna
Siehe rote Anmerkung in deinem Text.



  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 5121
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, eingetragen 2019-05-23


@pzktupel :

2019-05-22 09:30 - pzktupel in Beitrag No. 2 schreibt:
Man könnte noch einfacher vorgehen.

So geht es aber leider nicht. Finde den Fehler! eek

Ich weiß nicht, was dein Basic-Compiler mit dem Code macht. Bestenfalls stürzt das Programm zur Laufzeit ab. Anscheinend ist das nicht geschehen. Schlimmstenfalls kommt es zu "völlig unerklärlichen" Effekten, die mit diesem Code-Schnipsel erst einmal nicht in Zusammenhang gebracht werden.

Grüße
StrgAltEntf



  Profil  Quote  Link auf diesen Beitrag Link
Zrebna
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 25.09.2018
Mitteilungen: 193
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, vom Themenstarter, eingetragen 2019-05-25


Hey, ich update hier mal:

Mittlerweile hab ich es gebacken bekommen und so sieht mein Code aus:
C
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. #define LAENGE 100
  5.  
  6. char string[LAENGE] = "Hello world!";
  7.  
  8. char alphabet[26] = {0}; // hier auch ein int array als Datentyp möglich - Buchstaben = eigentlich ganze Zahlen
  9. int i, j, counter;
  10.  
  11. for(i = 0; i < 26; i++) {
  12. counter = 0;
  13. for(j = 0; string[j] !='\0'; j++) {
  14. if(string[j] == i + 'A' || string[j] == i + 'a') {
  15. counter++;
  16. }
  17. }
  18. if(counter > 0) {
  19. printf("%c: %d\n", i + 'A', counter);
  20. }
  21. }
  22.  
  23. return 0;
  24.  
  25. }
  26.  

Ich weiß, dass es elegantere Lösungen gibt, u.a. soll es angeblich nur mit einer for-Schleife möglich sein,
aber der Code macht, was er machen soll.

Nun möchte ich das ganze erweitern und quasi eine Funktion außerhalb der main schreiben, die mir die Buchstaben von einem eingegebenen string (per fgets()) innerhalb der main, zählen und returnen soll.

Neben der Frage, wie ich das am besten in der main darstelle (das lieber später), scheitere ich direkt am Anfang an einem Deklarierungs-fehler, den ich nicht sehe:
C
  1. #include <stdio.h>
  2.  
  3. int buchstaben_zaehlen(char* string; int length) {
  4. int alphabet[26] = {0};
  5. int i, j, counter;
  6.  
  7. for(i = 0; i < 26; i++) {
  8. counter = 0;
  9. for(j = 0; string[j] != '\0'; j++) {
  10. if(string[j] == i + 'A' || string[j] == i + 'a') {
  11. counter++;
  12. }
  13. }
  14. if(counter > 0) {
  15. return counter;
  16. }
  17. }
  18. }
  19.  
  20. int main() {
  21. #define LAENGE 100
  22.  
  23. char text[LAENGE];
  24.  
  25. fgets(text, LAENGE, stdin);
  26. int anzahl_buchstaben = buchstaben_zaehlen(text, LAENGE);
  27.  
  28. printf("%d\n", anzahl_buchstaben);
  29.  
  30. return 0;
  31. }

Fehler


ich übergebe doch in der main korrekt das char-array und char arrays sind doch quasi char-Pointers?
Warum geht das nicht.


Allgemeine Frage:
Wann verwendet man eigentlich void-funktionen intuitiv?
Wenn man nichts zurückgeben will, sondern Werte aus der aufrufenden Funktion verändern will, so dass sie dann auch in der aufrufenden Funktion verwendet werden können?
Ich verstehe das noch nicht intuitiv.



  Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 638
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.11, eingetragen 2019-05-25


2019-05-25 11:34 - Zrebna in Beitrag No. 10 schreibt:
C
  1. int buchstaben_zaehlen(char* string; int length) {


                                 ^
                                 Das gehört kein Semikolon, sondern ein Komma hin.



  Profil  Quote  Link auf diesen Beitrag Link
rlk
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.03.2007
Mitteilungen: 10520
Aus: Wien
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.12, eingetragen 2019-05-25


Hallo Zrebna,
die Parameter einer Funktion werden durch Beistriche getrennt, Du hast in Zeile 3 einen Strichpunkt nach string.

Du verwendest das Array alphabet nicht. Die Schleife über i kannst Du Dir ersparen, indem Du prüfst, das Zeichen string[j] ein Buchstabe ist, also zwischen 'a' und 'z' oder zwischen 'A' und 'Z' liegt.

Eine Funktion ohne Ergebnis rufst Du auf, wie Du da mit fgets getan hast.

Den Unterschied zwischen Arrays und Zeigern solltest Du Dir noch einmal verinnerlichen.

Servus,
Roland

[Die Antwort wurde nach Beitrag No.10 begonnen.]



  Profil  Quote  Link auf diesen Beitrag Link
Zrebna
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 25.09.2018
Mitteilungen: 193
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.13, vom Themenstarter, eingetragen 2019-05-25


2019-05-25 12:50 - zippy in Beitrag No. 11 schreibt:
2019-05-25 11:34 - Zrebna in Beitrag No. 10 schreibt:
C
  1. int buchstaben_zaehlen(char* string; int length) {


                                 ^
                                 Das gehört kein Semikolon, sondern ein Komma hin.

oops xD



  Profil  Quote  Link auf diesen Beitrag Link
Zrebna
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 25.09.2018
Mitteilungen: 193
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.14, vom Themenstarter, eingetragen 2019-05-25


2019-05-25 13:06 - rlk in Beitrag No. 12 schreibt:
Hallo Zrebna,
die Parameter einer Funktion werden durch Beistriche getrennt, Du hast in Zeile 3 einen Strichpunkt nach string.

Du verwendest das Array alphabet nicht. Die Schleife über i kannst Du Dir ersparen, indem Du prüfst, das Zeichen string[j] ein Buchstabe ist, also zwischen 'a' und 'z' oder zwischen 'A' und 'Z' liegt.

Eine Funktion ohne Ergebnis rufst Du auf, wie Du da mit fgets getan hast.

Den Unterschied zwischen Arrays und Zeigern solltest Du Dir noch einmal verinnerlichen.

Servus,
Roland

[Die Antwort wurde nach Beitrag No.10 begonnen.]


Danke für den Input - ich versuch es nochmal.
Bzgl. Unterschied zw. strings und arrays - ist nicht ein array auch eine Art Pointer, in dem Sinne, dass zb. ein char_Zeiger immer auf die Adresse des ersten Buchstaben innerhalb einem array zeigt?



  Profil  Quote  Link auf diesen Beitrag Link
Zrebna hat die Antworten auf ihre/seine Frage gesehen.
Zrebna hat selbst das Ok-Häkchen gesetzt.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2019 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]