• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Im Monat Februar heisst es: Ab in die Welt und Quadrate aufspüren und fotografieren! Quadrat zum Quadrat ist unser Motto und wieder einmal setzen wir auf Eure Kreativität. Hier geht es lang --> Klick

C Programmieren ; Hilfe bei Aufgabe (Häufigkeit der Buchstaben zählen)

abdulbaqi

Granny Smith
Registriert
25.10.13
Beiträge
15
Hallo liebe leute,
ich hoffe das ist die richtige section hier.
also ich hab an der uni eine aufgabe bekommen, leider hab ich nicht viel plan von programmieren ich hoffe ihr könnt mir helfen, da ich die in 2 tagen die übung abgeben muss:

Aufgabe:
Schreiben Sie ein programm (countletters.c) das die Häufigkeit der Buchstaben A - Z in einer Textdatei zählt. Unterscheiden Sie dabei NICHT auf Groß- und Kleinschreibung. Ignorieren sie Umlaute, Leerzeichen und sonstige Zeichen.

ps: hab auch gegooglet aber nichts gefunden was mir dummi weiterhelfen könnte :/
 

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Eine Übung sollte man wohl doch eigentlich selbst lösen.
Daher nur Hilfestellung zum Ansatz:
Als Erstes sollte man sich den Algorithmus ganz abstrakt und ohne Bezug zu einer Programmiersprache überlegen.
Wie würdest Du denn vorgehen, wenn Du selbst von Hand diese Aufgabe für einen konkreten Text ausführen solltest?
Ich für meinen Teil würde mir auf einem Notizblatt jeden Buchstaben von A bis Z aufschreiben und dann den zu scannenden Text Buchstabe für Buchstabe durchgehen und auf dem Notizblatt eine Strichliste für jeden der 26 Buchstaben führen. Nach dem einmaligen Durcharbeiten des Textes steht dann auf dem Notizzettel für jeden der Buchstaben die Anzahl seiner Vorkommen.

So, und nun als nächstes die Überlegung, wie man diese „Stichliste“ am besten programmatisch umsetzt. Man braucht also irgendeine Map, die jedem Buchstaben eine Zahl zuordnet, die man pro gefundenem Buchstaben um 1 erhöhen kann. Die Anzahl der Keys (Buchstaben) steht fest, also könnte man ein Array dafür verwenden.
In C kann man meines Wissens nur Integers als Array-Indizes nehmen? Dann könnte man Index 0 mit Buchstaben A gleichsetzen, Index 1 mit Buchstabe B etc.
Ich weiß ja nicht, welche Datenstrukturen ihr so verwenden dürft / kennengelernt habt.
 

abdulbaqi

Granny Smith
Registriert
25.10.13
Beiträge
15
Eine Übung sollte man wohl doch eigentlich selbst lösen.
Daher nur Hilfestellung zum Ansatz:
Als Erstes sollte man sich den Algorithmus ganz abstrakt und ohne Bezug zu einer Programmiersprache überlegen.
Wie würdest Du denn vorgehen, wenn Du selbst von Hand diese Aufgabe für einen konkreten Text ausführen solltest?
Ich für meinen Teil würde mir auf einem Notizblatt jeden Buchstaben von A bis Z aufschreiben und dann den zu scannenden Text Buchstabe für Buchstabe durchgehen und auf dem Notizblatt eine Strichliste für jeden der 26 Buchstaben führen. Nach dem einmaligen Durcharbeiten des Textes steht dann auf dem Notizzettel für jeden der Buchstaben die Anzahl seiner Vorkommen.

So, und nun als nächstes die Überlegung, wie man diese „Stichliste“ am besten programmatisch umsetzt. Man braucht also irgendeine Map, die jedem Buchstaben eine Zahl zuordnet, die man pro gefundenem Buchstaben um 1 erhöhen kann. Die Anzahl der Keys (Buchstaben) steht fest, also könnte man ein Array dafür verwenden.
In C kann man meines Wissens nur Integers als Array-Indizes nehmen? Dann könnte man Index 0 mit Buchstaben A gleichsetzen, Index 1 mit Buchstabe B etc.

Ich weiß ja nicht, welche Datenstrukturen ihr so verwenden dürft / kennengelernt habt.

erst einmal danke... aber in aufgabe a ist ja kein zu scannender Text gegeben, dh. denk ich mal dass man das allgemein schrieben soll.
ich weiß echt net was zu mit dem letzen Teil meinst. Das ist unsere 2. Vorlesung gewesen und der gibt und solche Aufgaben. Das Hello Worl programm war ja noch einfach. Aber jetzt bin ich sehr überfragt, würde mir ja auch dazu was durchlesen im internet wenn ich wüsste, wonach ich genau suchen sollte... Ich weiß nicht was du mit Index meinst :O
tut mir echt leid....
 

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
erst einmal danke... aber in aufgabe a ist ja kein zu scannender Text gegeben, dh. denk ich mal dass man das allgemein schrieben soll.

Selbstverständlich. Ein Programm zu schreiben, das nur für einen bestimmten Text die Anzahlen liefert, ist sinnlos und außerdem trivial: Man könnte schon vor der Programmierung die Anzahlen bestimmen und das Programm würde immer nur diese Zahlen ausgeben.

ich weiß echt net was zu mit dem letzen Teil meinst. Das ist unsere 2. Vorlesung gewesen und der gibt und solche Aufgaben. Das Hello Worl programm war ja noch einfach. Aber jetzt bin ich sehr überfragt, würde mir ja auch dazu was durchlesen im internet wenn ich wüsste, wonach ich genau suchen sollte... Ich weiß nicht was du mit Index meinst :O
Na gut, wenn ihr noch keine Arrays oder Maps hattet, dann nimmst Du halt z.B. 26 einzelne Int-Variablen z.B. namens anzahlA, anzahlB etc bis anzahlZ. Du brauchst doch nur für jeden Buchstaben einen separaten Zähler.
 

abdulbaqi

Granny Smith
Registriert
25.10.13
Beiträge
15
Selbstverständlich. Ein Programm zu schreiben, das nur für einen bestimmten Text die Anzahlen liefert, ist sinnlos und außerdem trivial: Man könnte schon vor der Programmierung die Anzahlen bestimmen und das Programm würde immer nur diese Zahlen ausgeben.


Na gut, wenn ihr noch keine Arrays oder Maps hattet, dann nimmst Du halt z.B. 26 einzelne Int-Variablen z.B. namens anzahlA, anzahlB etc bis anzahlZ. Du brauchst doch nur für jeden Buchstaben einen separaten Zähler.

ok gut ..
dann müsste das erst ma so aussehen:

# include <stdio.h>

int main(void)
{

int anzahlA, anzahlB, anzahlC, ..., anzahlZ;


return 0;
}




so haben wir schon mal Buchstabe A - Z las Parameter und nun ? :/
 

abdulbaqi

Granny Smith
Registriert
25.10.13
Beiträge
15
Na gut, wenn ihr noch keine Arrays oder Maps hattet, dann nimmst Du halt z.B. 26 einzelne Int-Variablen z.B. namens anzahlA, anzahlB etc bis anzahlZ. Du brauchst doch nur für jeden Buchstaben einen separaten Zähler.

,,wir hatten array usw" in der Vorlesung innerhalb von minuten einfach mal abgehackt ...
ganz am Anfang der Aufgabe steht ja : In der Vorlesung wurde das Beispiel "Counting Digits" vorgestellt, das die Häufigkeit der Ziffern zählt . Verwenden sie dieses Beispiel als Ausgangspunkt
ich hab mir die Folie der Volesung angeschaut und musste festellen dass ich nix davon verstehe, zumal da auf englisch ist und außerdem hat der prof nicht viel dazu gesagt. hatte eher das gefühl der will das schnell abhacken

folie : counting diit.png
 

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Ich will mal nicht hoffen, dass Euer Dozent mit der Axt zum Unterricht kommt und Euch schnell was abhackt.

Zur Folie: Dann hattet Ihr Arrays ja doch. Auch alles andere, was ich vorher geschrieben hatte, kommt in der Folie vor und ist dort erklärt. Aber wenn Du das nicht verstehst, wird es Dir nicht helfen, wenn Dir jemand die Lösung präsentiert, sondern nur, wenn Du nachliest, was z.B. ein Array ist, was man unter dem Index eines Arrays versteht, wie die implizite Typumwandlung von Char zu Int funktioniert, und was ein Ausdruck (Expression) ist. Das sind Grundbegriffe, die Du verstanden haben musst, bevor Du die Folie verstehen kannst, und die wiederum ist wirklich schon fast eine Vorlage für die Übungsaufgabe.
 

abdulbaqi

Granny Smith
Registriert
25.10.13
Beiträge
15
Ich will mal nicht hoffen, dass Euer Dozent mit der Axt zum Unterricht kommt und Euch schnell was abhackt.

Zur Folie: Dann hattet Ihr Arrays ja doch. Auch alles andere, was ich vorher geschrieben hatte, kommt in der Folie vor und ist dort erklärt. Aber wenn Du das nicht verstehst, wird es Dir nicht helfen, wenn Dir jemand die Lösung präsentiert, sondern nur, wenn Du nachliest, was z.B. ein Array ist, was man unter dem Index eines Arrays versteht, wie die implizite Typumwandlung von Char zu Int funktioniert, und was ein Ausdruck (Expression) ist. Das sind Grundbegriffe, die Du verstanden haben musst, bevor Du die Folie verstehen kannst, und die wiederum ist wirklich schon fast eine Vorlage für die Übungsaufgabe.

sorry meinte abgehakt :D
ja gut ich schau mir erst ma die definitionen an