Je ne comprends pas un bout de code

Résolu/Fermé
kazute Messages postés 109 Date d'inscription samedi 9 avril 2016 Statut Membre Dernière intervention 12 novembre 2020 - Modifié le 24 sept. 2020 à 16:42
kazute Messages postés 109 Date d'inscription samedi 9 avril 2016 Statut Membre Dernière intervention 12 novembre 2020 - 24 sept. 2020 à 18:30
Bonjour,

Je me renseignais sur le tri par fusion dans les différents langages et je suis tombé sur un bout de code en C que je ne comprends pas :

void fusion (int *a, int n, int m) {
    int i=0, j=m, k;
    int *x = malloc(n * sizeof (int));
    for (k = 0; k < n; k++) {
        x[k] = j == n      ? a[i++]
             : i == m      ? a[j++]
             : a[j] < a[i] ? a[j++]
             :               a[i++];
    }
    for (i = 0; i < n; i++) {
        a[i] = x[i];
    }
    free(x);
}


En effet, je ne comprends pas ce qui est effectué dans la boucle for.

Je suppose qu'on dit que x[k] est égale a j et qu'on verifie que j est égale a n mais pour le point d'interrogation et ce qui suit je ne comprends pas.

Merci d'avance et bonne soirée

1 réponse

yg_be Messages postés 21084 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 janvier 2023 1 309
24 sept. 2020 à 18:02
bonjour,
en programmation, il est préférable de ne pas supposer, et de plutôt lire la documentation.
cette page t'aidera à comprendre: https://zestedesavoir.com/articles/2505/les-bizarreries-du-langage-c-1/
0
kazute Messages postés 109 Date d'inscription samedi 9 avril 2016 Statut Membre Dernière intervention 12 novembre 2020 20
24 sept. 2020 à 18:30
Je venais de comprendre le sens du code en faisant des petits essais de mon coté, merci quand meme je clos le sujet
0