Probleme mit C-Programmierung: Zahlen sortieren?

Hallo, ich habe folgendes Programm geschrieben und komme einfach nicht weiter. Das Programm zählt die Buchstaben einer .txt Datei und gibt ebenso deren Häufigkeit an. Ich soll jetzt noch die Anzahl der Buchstaben beginnen mit der größten Zahl sortieren. Die Buchstaben müssen dabei auch stimmen und natürlich die Häufigkeit. Kann mir jemand dabei helfen?

So weit bin ich gekommen, eine Beispiel txt Datei wurde implementiert. Ich programmiere mit Codeblocks.


#include <stdio.h>
include

char dateiname[40]; int anweisung1;

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

FILE *fp = fopen(argv[1], "r");
if (fp == NULL)
{
    printf("Die Datei kann nicht geoeffnet werden\n");
    return 0;
}

double anzahl[26] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int gesamt = 0;


while (1) //Zähschleife
{
    int buchstaben = fgetc(fp);
    if (buchstaben < 0)
    {
        break;
    }
    if (buchstaben >= 'A' && buchstaben <= 'Z') //Zählschleife für Großbuchstaben
    {
        anzahl[buchstaben - 'A']++;
        gesamt++;
    }
    else if (buchstaben >= 'a' && buchstaben <= 'z')
    {
        anzahl[buchstaben - 'a']++; //Zähschleife für Kleinbuchstaben
        gesamt++;
    }
}


fclose(fp);

int anweisung;
printf("Dieses Programm zaehlt die die Buchstaben in einer .txt Datei\nund gibt die Haeufigkeit der Buchstaben an\n");
printf("Sie haben jetzt die Auswahl zwischen:\n");
printf("1. Die .txt Datei mit printf in der Konsole auszugeben\n");
printf("2. Eine neue .txt Datei zu speichern\n\n");
scanf("%d", &anweisung);

switch(anweisung)
{
case 1:
    printf("Die Gesamtzahl der Buchstaben lautet: %d\n",gesamt);

    int i;
    for (i = 0; i < 26; i++)
    {
        printf("%c : %0.lf", (i + 'A'), anzahl[i]);
        double prozente = anzahl[i]*100/gesamt;
        printf("\tHaeufigkeit: %.2lf%%\n",prozente);
    }
    return 0;

case 2:

    printf("\nBitte geben Sie den Dateinamen mit .txt an:\n\n");
    scanf("%s", dateiname);
    printf("\nIhre Datei heisst: %s.\n", dateiname);

    FILE* fp;
    fp = fopen(dateiname,"w");
    fprintf(fp,"Die Gesamtzahl der Buchstaben lautet: %d\n",gesamt);

    for (i = 0; i < 26; i++)
    {
        fprintf(fp,"%c : %0.1f\t  ", (i + 'A'), anzahl[i]);
        double prozente = anzahl[i]*100/gesamt;
        fprintf(fp,"Haeufigkeit: %.2lf%%\n",prozente);
    }
    return 0;
    fclose(fp);
}

}

programmieren, C (Programmiersprache), codeblocks

Meistgelesene Fragen zum Thema Codeblocks