String sortieren



  • hallo.

    bin soeben mal wieder beim programmieren lernen.
    jedoch hab ich ein kleines problem und hoffe das jemand helfen kann.

    also erstmal zur aufgabe:

    es soll ein string eingelesen werden-einzelne zeichen sollen alph.sortiert werden und wieder ausgegeben werden.

    das problem das ich dabei habe, ist das umlaute immer als erstes ausgegeben werden,obwohl ihr dec-wert ja nach "normalen" buchstaben und zahlen kommt.
    laut debugger geschieht das,da beim einlesen nicht der richtige wert genommen wird. zum beispiel hat das ö ja den wert 148,jedoch wird -108 (also ein negativer wert)in den puffer geschrieben.somit wäre ja klar warum umlaute zuerst ausgegeben werden.
    wie kann ich dies nun richtig machen-wie müsste ich mein programm anpassen?

    über hilfe wäre ich dankbar.

    mein code lautet:

    #include <stdio.h>
    
    #define text 20
    
    void main()
    
    {
    int j=0,i=0,k=0,zw1=0,zw2=0,anzeige;
    char puffer[text],c;
    
    printf("Bitte geben Sie einen Text ein:");
    
    for (i=0;i<=text && (c=getchar())!='\n';++i)
    {
    puffer[i]=c;
    }
    
    for(j=0;j<i;++j)
    	{	
    	for(k=j;k<i;++k)
    	{
    		zw1=puffer[j];
    		zw2=puffer[k];
    
    		if(zw1>zw2)
    		{
    			puffer[j]=zw2;
    			puffer[k]=zw1;
    		}
    	}
    
    	anzeige=puffer[j];
    	putchar(anzeige);
    	}
    
    }
    

    danke schon mal



  • hallo.

    ich nochmal.

    nach einer pause habe ich es schon selbst gefunden.
    habe anstatt unsigned char, nur char verwendet.
    dadurch stimmt ja der "wertebereich" nicht.

    schön so ein aha erlebnis.
    🙂 😃 😉

    bis zur nächsten frage

    grüsse


Anmelden zum Antworten