Hilfe bei Aufgabe // Häufigkeit der Buchstaben zählen



  • Hallo liebe leute,
    ist mein erster thread. 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.



  • Zeig erstmal was du bisher hast, oder wie du dir das vorstellst.



  • ich hab bisher gar nix

    ich weiß ja nicht einmal wo ich anfangen soll. ... 😕



  • Es wäre schon mal nicht schlecht, wenn dein Programm erstmal eine Datei auf dem Bildschirm ausgeben kannst.



  • wat ???? 😃



  • Schreiben Sie ein Programm, das eine Textdatei vollständig auf dem Bildschirm ausgibt.

    Hier wird dir geholfen.
    Es macht aber keiner die Hausaufgaben für dich.



  • ach du meinst die printf funktion -.- ... 😃



  • Nein.

    Aber probier es damit.



  • wenn ich ehrlich bin versteh ich grad nicht was du meinst 😕 ...



  • Es gibt geeignetere Funktionen dafür als printf.
    printf geht aber auch.

    Mit printf gibst du aber nur Zeichen auf dem Bildschirm aus, das reicht alleine nicht aus. Du musst ja noch an die Zeichen aus der Textdatei kommen.

    Allanprog schrieb:

    Schreiben Sie ein programm (countletters.c) das die Häufigkeit der Buchstaben A - Z in einer Textdatei zählt.

    Du musst also irgendwie an die Daten in der Textdatei rankommen und sie dann verarbeiten.

    DirkB schrieb:

    Schreiben Sie ein Programm, das eine Textdatei vollständig auf dem Bildschirm ausgibt.

    Du musst also irgendwie an die Daten in der Textdatei rankommen und sie dann ausgeben.
    Das ist fast das gleiche wie bei deiner Aufgabe, nur brauchst du dir noch keine Gedanken um die Verabeitung zu machen.
    Es ist aber erstmal ein Grundgerüst.

    Zumindest müsstest du dazu Informationen in deinen Unterlagen haben, sonst hättest du die Aufgabe nicht bekommen.



  • Auf dass er ein unfähiger Programmierer bleiben möge:

    #include <stdio.h>
    #include <ctype.h>
    #include <assert.h>
    
    int main(int argc, char ** argv)
    {
        int count[26] = { 0 }, c;
    
        assert(argc > 1);
    
        FILE * in = fopen(argv[1], "r");
        assert(in);
    
        while ((c = fgetc(in)) != EOF)
        {
            c = tolower(c);
            if (c >= 'a' && c <= 'z')
                ++count[c - 'a'];
        }
        fclose(in);
    
        return 0;
    }
    

    Allanprog schrieb:

    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.

    Da steht nichts davon da, dass man die Ergbenisse ausgeben muss 😉



  • #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char ** argv)
    {
    	if (argc > 1)
    	{
    		FILE *f;
    
    		if (f = fopen(argv[1], "r"))
    		{
    			int count[3 * 8 + 2];
    
    			int i, n;
    
    			n = sizeof(count) / sizeof(*count);
    
    			for (i = 0; i < n; ++i)
    				count[i] = 0x0;
    
    			while (!feof(f))
    			{
    				char buf[256];
    
    				int c = fread(buf, 1, sizeof(buf), f);
    
    				for (i = 0; i < c; ++i)
    					if (buf[i] >= 0x61 && buf[i] <= 0x7A)
    						++count[buf[i] - 0x61];
    					else if (buf[i] >= 0x41 && buf[i] <= 0x5A)
    						++count[buf[i] - 0x41];
    			}
    
    			fclose(f);
    
    			for (i = 0; i < n; ++i)
    				printf("%c%c%c%c%d\n", i + 0x60 + 1, 0x20, 0x3D, 0x20, count[i]);
    		}
    
    		return 0;
    	}
    
    	return 1;
    }
    


  • DrakoXP schrieb:

    Auf dass er ein unfähiger Programmierer bleiben möge:

    So einen Satz wollte ich schon bei meinem zweiten Post schreiben. 😉

    Warum nimmst du kein islower beim if ?

    hjghj schrieb:

    ...

    Iiiihhhhh!



  • DirkB schrieb:

    Warum nimmst du kein islower beim if ?

    Simpel: Ich habe nicht daran gedacht 😃


Anmelden zum Antworten