Frage zur Aufgabenstellung
-
Hallo!
Also ich muss/darf ein Programm schreiben, das eine Buchstabenfolge einlest und anschließend die 10 häufigsten vorkommenden Buchstaben und deren Prozentsatz ausgibt. Habe nun mal, sehr umständlich, zu Testzwecken versucht, dies umzusetzen:
#include <stdio.h> #include <string.h> / void quicksort(int buchstaben[], int n) { int i, j = 0, tmp, mittel= 1;; if(n == 1) return; for(i = 0; i<n; i++) { mittel += buchstaben[i]; } mittel/=n; for(i = 0; i<n; i++) { if(buchstaben[i] < mittel) { tmp = buchstaben[i]; buchstaben[i] = buchstaben[j]; buchstaben[j] = tmp; j++; } } /*if(j==0) return;*/ } void Ausgabe(int buchstaben[]) { int x; for(x = 0; x<26;x++) { printf("%d", buchstaben[x]); } } int main(void) { int buchstaben[27]; buchstaben[0] = 0; buchstaben[1] = 0; buchstaben[2] = 0; buchstaben[3] = 0; buchstaben[4] = 0; buchstaben[5] = 0; buchstaben[6] = 0; buchstaben[7] = 0; buchstaben[8] = 0; buchstaben[9] = 0; buchstaben[10] = 0; buchstaben[11] = 0; buchstaben[12] = 0; buchstaben[13] = 0; buchstaben[14] = 0; buchstaben[15] = 0; buchstaben[16] = 0; buchstaben[17] = 0; buchstaben[18] = 0; buchstaben[19] = 0; buchstaben[20] = 0; buchstaben[21] = 0; buchstaben[22] = 0; buchstaben[23] = 0; buchstaben[24] = 0; buchstaben[25] = 0; int tmp = 1,i; int max = 1; char eingabe; printf("Eingabe: (Abbruch bei Eingabe = 1!) ") ; do { scanf("%c", &eingabe); switch(eingabe) { case 'a' : buchstaben[0]++; break; case 'b' : buchstaben[1]++; break; case 'c' : buchstaben[2]++; break; case 'd' : buchstaben[3]++;break; case 'e' : buchstaben[4]++;break; case 'f' : buchstaben[5]++;break; case 'g' : buchstaben[6]++;break; case 'h' : buchstaben[7]++;break; case 'i' : buchstaben[8]++;break; case 'j' : buchstaben[9]++;break; case 'k' : buchstaben[10]++;break; case 'l' : buchstaben[11]++;break; case 'm' : buchstaben[12]++;break; case 'n' : buchstaben[13]++;break; case 'o' : buchstaben[14]++;break; case 'p' : buchstaben[15]++;break; case 'q' : buchstaben[16]++;break; case 'r' : buchstaben[17]++;break; case 's' : buchstaben[18]++;break; case 't' : buchstaben[19]++;break; case 'u' : buchstaben[20]++;break; case 'v' : buchstaben[21]++;break; case 'w' : buchstaben[22]++;break; case 'x' : buchstaben[23]++;break; case 'y' : buchstaben[24]++;break; case 'z' : buchstaben[25]++;break; case 'R': tmp = 0;break; } } while(tmp ==1); printf("%d\n", buchstaben[0]); printf("%d\n", buchstaben[1]); printf("%d\n", buchstaben[2]); printf("%d\n", buchstaben[3]); printf("%d\n", buchstaben[4]); printf("%d\n", buchstaben[5]); printf("%d\n", buchstaben[6]); printf("%d\n", buchstaben[7]); printf("%d\n", buchstaben[8]); printf("%d\n", buchstaben[9]); printf("%d\n", buchstaben[10]); printf("%d\n", buchstaben[11]); printf("%d\n", buchstaben[12]); printf("%d\n", buchstaben[13]); printf("%d\n", buchstaben[14]); printf("%d\n", buchstaben[15]); printf("%d\n", buchstaben[16]); printf("%d\n", buchstaben[17]); printf("%d\n", buchstaben[18]); printf("%d\n", buchstaben[19]); printf("%d\n", buchstaben[20]); printf("%d\n", buchstaben[21]); printf("%d\n", buchstaben[22]); printf("%d\n", buchstaben[23]); printf("%d\n", buchstaben[24]); printf("%d\n", buchstaben[25]); for(i = 0; i<buchstaben[i];i++) { if(buchstaben[i] >max) { max = buchstaben[i]; } } printf("\nHALLOOO %d\n",max); int n=1; quicksort(buchstaben, n); Ausgabe(buchstaben); return 0; }
Mein Problem ist jetzt, das er den Quicksort nicht macht/also das er nicht sortiert.
Hoffe, jemand hier kann mir helfen!
-
bei
int n=1; quicksort(buchstaben, n);
kein wunder.
gemeint war wohlquicksort(buchstaben, 27);
edit: nee, bei dir iat alles käse. das ding hat überhaupt nix mit quicksort zu tun.
-
volkard schrieb:
edit: nee, bei dir iat alles käse. das ding hat überhaupt nix mit quicksort zu
Was? Da war mein Schulprofessort anderer Meinung!
EDIT: Hattest Recht, hab den falschen Sort verwendet...danke!