Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/Buchstaben zählen: Unterschied zwischen den Versionen

(Die Seite wurde neu angelegt: „== Aufgabenstellung == Schreibe ein Programm, das die Vorkommnisse aller Buchstaben in einer Datei zählt und anschließend ausgibt. Verwende die folgende Vorgab...“)
 
(Anonym)
 
(6 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
== Aufgabenstellung ==
 
== Aufgabenstellung ==
  
Schreibe ein Programm, das die Vorkommnisse aller Buchstaben in einer Datei zählt und anschließend ausgibt. Verwende die folgende Vorgabe:
+
Schreibe ein Programm, das die Vorkommnisse aller Buchstaben in einer Datei zählt und anschließend ausgibt. Dabei sollen Groß- und Kleinbuchstaben zusammengefasst werden. Verwende die folgende Vorgabe:
  
 
  #include <stdio.h>
 
  #include <stdio.h>
Zeile 25: Zeile 25:
 
  }
 
  }
  
== Hinweise zum Dateienlesen ==
+
== Hinweis zum Dateienlesen ==
 +
Für diese Aufgabe werden folgende File-IO-Funktionen benötigt. Die ersten beiden sind in der Vorgabe schon vorhanden.
 
* <tt>fopen(filename, "r")</tt> öffnet die Datei unter dem angegebenen Dateinamen im Nur-Lese-Modus und gibt einen FILE-Pointer zurück, mit dem im Folgenden auf die Datei zugegriffen werden kann.
 
* <tt>fopen(filename, "r")</tt> öffnet die Datei unter dem angegebenen Dateinamen im Nur-Lese-Modus und gibt einen FILE-Pointer zurück, mit dem im Folgenden auf die Datei zugegriffen werden kann.
 
* <tt>fclose(file)</tt> schließt die Datei.
 
* <tt>fclose(file)</tt> schließt die Datei.
 
* <tt>fgetc(file)</tt> liest ein Zeichen der Datei. Ist die Datei zuende, gibt die Funktion <tt>-1</tt> zurück.
 
* <tt>fgetc(file)</tt> liest ein Zeichen der Datei. Ist die Datei zuende, gibt die Funktion <tt>-1</tt> zurück.
 +
 +
== Hinweis zum Umgang mit chars ==
 +
Mit <tt>char</tt> kann man genauso rechnen, wie mit <tt>int</tt>. Die Berechnung <tt>character-'a'</tt> ergibt also die Position des Buchstaben im Alphabet, wenn <tt>character</tt> zwischen <tt>a</tt> und <tt>z</tt> in der [http://de.wikipedia.org/wiki/ASCII-Tabelle ASCII-Tabelle] liegt.
 +
 +
== Zusatzaufgabe ==
 +
Verschönere die Ausgabe so, dass für jede Buchstabenhäufigkeit eine visuelle Ausgabe (z.B. in Form eines Balkens aus <tt>#</tt>) angezeigt wird, die den relativen Anteil des Buchstabens darstellt.
 +
 +
== Kommentare ==
 +
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)
 +
 +
== Anonym ==
 +
int main(int argc, char **argv) {<br>
 +
Die Argumente von Main und auch die Sternchen sollten erklärt werden. Es kam weder in der 1.VL noch im 1.Tut.
 +
 +
----
 +
 +
das sind die kommandozeilen parameter der ausfuehrbaren datei, wobei argc (Argument Count) die anzahl der uebergebenen argumente ist und argv (Argument Values) die einzelnen uebergebenen argumente sind. hierbei werden argumente unterschieden wenn sie von einem space character (040) getrennt sind.
 +
 +
argc ist hierbei mindestens 1, da es mindetens den namen der ausfuehrbaren datei enthaelt.
 +
 +
andererseits ist es fuer die lsg der aufgabe eher unerheblich was genau in dem vorgegebenen code passiert, desshalb ist er ja vorgegeben und wird nicht vorrausgesetzt...
 +
 +
mfg alex
 +
 +
<!--
 +
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.
 +
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
 +
 +
==== Robert ====
 +
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.
 +
-->
 +
 +
[[Kategorie:CKurs]]
 +
[[Kategorie:CKurs_Aufgaben]]

Aktuelle Version vom 10. September 2013, 09:52 Uhr

Aufgabenstellung

Schreibe ein Programm, das die Vorkommnisse aller Buchstaben in einer Datei zählt und anschließend ausgibt. Dabei sollen Groß- und Kleinbuchstaben zusammengefasst werden. Verwende die folgende Vorgabe:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
    if (argc != 2) {
        printf("missing filename\n");
        return 0;
    }

    // open file
    FILE *file = fopen(argv[1], "r");
    if (file == NULL) {
        printf("cannot open file\n");
        return 0;
    }

    // TODO your code here

    // close the file
    fclose(file);
}

Hinweis zum Dateienlesen

Für diese Aufgabe werden folgende File-IO-Funktionen benötigt. Die ersten beiden sind in der Vorgabe schon vorhanden.

  • fopen(filename, "r") öffnet die Datei unter dem angegebenen Dateinamen im Nur-Lese-Modus und gibt einen FILE-Pointer zurück, mit dem im Folgenden auf die Datei zugegriffen werden kann.
  • fclose(file) schließt die Datei.
  • fgetc(file) liest ein Zeichen der Datei. Ist die Datei zuende, gibt die Funktion -1 zurück.

Hinweis zum Umgang mit chars

Mit char kann man genauso rechnen, wie mit int. Die Berechnung character-'a' ergibt also die Position des Buchstaben im Alphabet, wenn character zwischen a und z in der ASCII-Tabelle liegt.

Zusatzaufgabe

Verschönere die Ausgabe so, dass für jede Buchstabenhäufigkeit eine visuelle Ausgabe (z.B. in Form eines Balkens aus #) angezeigt wird, die den relativen Anteil des Buchstabens darstellt.

Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)

Anonym

int main(int argc, char **argv) {
Die Argumente von Main und auch die Sternchen sollten erklärt werden. Es kam weder in der 1.VL noch im 1.Tut.


das sind die kommandozeilen parameter der ausfuehrbaren datei, wobei argc (Argument Count) die anzahl der uebergebenen argumente ist und argv (Argument Values) die einzelnen uebergebenen argumente sind. hierbei werden argumente unterschieden wenn sie von einem space character (040) getrennt sind.

argc ist hierbei mindestens 1, da es mindetens den namen der ausfuehrbaren datei enthaelt.

andererseits ist es fuer die lsg der aufgabe eher unerheblich was genau in dem vorgegebenen code passiert, desshalb ist er ja vorgegeben und wird nicht vorrausgesetzt...

mfg alex