Sortieren in C

Gast #5479388
Lesenswert?

Hallo Zusammen


Hier mal ein Quellcode zum jeweiligen Namen gehört eine Punktezahl, und 
es soll aufsteigend sortiert werden. Es läuft soweit, allerdings erden 
immer nur die Zahlen und nicht der Name ausgegeben...was mache ich 
falsch ?
PS bin noch Anfänger:-)

 int main()
{
int kai,uwe,heinz;
uwe=11;
heinz=4;
kai=21;

int array[3] = {kai,uwe,heinz};

int x;

for (int y=1; y<3; y++)
{
for(int z=0;z<3-1;z++)
{
if (array[z]>array[z+1])
{
x = array[z];
array[z]=array[z+1];
array[z+1] = x;
}
}
}
for(int y=0;y<3;y++)
printf("%i,",array[y]);



return 0;
}
Gast #5479393
Lesenswert?

Neuling schrieb:
> Hallo Zusammen
>
> Hier mal ein Quellcode zum jeweiligen Namen gehört eine Punktezahl, und
> es soll aufsteigend sortiert werden. Es läuft soweit, allerdings erden
> immer nur die Zahlen und nicht der Name ausgegeben...was mache ich
> falsch ?


Du hast vergessen, das C-Buch zu lesen.
Kurz nachholen und alles läuft!
#5479420
Lesenswert?

Das funktioniert grundsätzlich so nicht.
kai,uwe,heinz sind in dem Code Variablen und keine Texte.
Das Array int array[3] = {kai,uwe,heinz}; enthält darum einfach die 
Zahlen und keine Namen.
Genau genommen sieht dein Mikrocontroler die Begriffe "kai", "uwe" und 
"heinz" nie weil der sogenannte Compiler der aus C, Maschinencode macht, 
einfach die Werte verwendet, und keine von dir benannten Variablen.

In der Tat fehlen dir Grundlagen. Der Tipp mit den Structs ist nicht 
schlecht. Du brauchst eine Datenstruktur in die du einerseits den Wert 
abspeicherst aber ebenso den Namen des Wertes (als char* welches in C 
Texte aufnehmen kann.).
Dadurch sind diese beiden Dinge untrennbar miteinander verbunden und 
können bei Bedarf abgerufen werden.
#5479549
Lesenswert?

http://www.gnu.org/software/libc/manual/html_node/Searching-and-Sorting.html#Searching-and-Sorting

Du brauchst aber eine Funktion die den Vergleich an sich durchführt...

http://www.gnu.org/software/libc/manual/html_node/Comparison-Functions.html#Comparison-Functions


so geht es aber auch...
https://stackoverflow.com/questions/20519293/optimized-bsort-in-c

allerdings würde ich mich als Anfänger an die Standard Funktionen 
halten.

Ich würde auch eine Struktur benutzen um die Punktzahl einen Namen 
zuordnen zu können.
1
struct spieler {
2

3
char name[64];
4
int punkte;
5
}
6

7
Denn du musst ja die Punkte mit den Namen sortieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren