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



  • 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