Trier des structures...

Introduction

Pour rappel : les structures en C.

Nous travaillons avec une structure de type "individu" composée de deux champs: un matricule, et un nom.
Les différentes occurences structures sont ensuite placées dans un tableau.

Composition de structure en C

#define NMAX 25

typedef struct { unsigned int mat; char nom[20]; } Individu;
Individu tableau[NMAX];

En supposant que les valeurs ont été préalablement affectées aux différents champs, nous pourions provoquer l'affichage des structures de cette manière:

Affichage de structure en C


for ( k=0; k<NMAX; k++ )
printf ("Matricule : %d -> Individu : %s\n", Individu[k].mat, Individu[k].nom);


Inhaltsverzeichnis Haut

Fonctions de tri de structure en C

Nous allons revoir nos fonctions de tri d'entiers, et les adapter à un tri de structures...

Tri de structure

enum { MAT, NOM, NOMMAT }; //critère de comparaison

void tri( Individu t[], int n, int id)
{
int p, temp, k1, k2;
for (k1=0;k1<n;k1++)
{
p=k1;
for (K2=k1+1;k2<n;k2++)
if ( compare(t[k1],t[k2],id) >0 )
{
p=k2;
}
permute(&t[k1], &t[k2]);
}
}

Comparer et permuter des structures

int compare (Individu x, Individu y, int choix)
{
int r;
switch(choix)
{
case MAT : return px->mat-py->mat;
case NOM : return strcmp(px->nom,pyb->nom);
case NOMAT : r=strcmp(px->nom,py->nom); return r!=0 ? r : px->mat-pyb->mat;
default : return px->mat-py->mat;
}
}

void permute (Individu *x, Individu *y)
{
Individu w ;
w=*x;
*x=*y;
*y=w;
}

Deutsche Übersetzung

Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.

Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.

Vielen Dank im Voraus.

Dokument erstellt 12/03/2003, zuletzt geändert 07/04/2023
Quelle des gedruckten Dokuments:https://www.gaudry.be/en/de/c-trier-structure.html

Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.