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 wohl

    quicksort(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!


Anmelden zum Antworten