Tri de tableaux de structure
Résolu/Fermé
ProgCnew
Messages postés
7
Date d'inscription
jeudi 14 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
-
Modifié le 14 mai 2020 à 14:19
yg_be Messages postés 22764 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024 - 19 mai 2020 à 19:13
yg_be Messages postés 22764 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024 - 19 mai 2020 à 19:13
A voir également:
- Tri de tableaux de structure
- Tableaux croisés dynamiques - Guide
- Tri excel - Guide
- Logiciel de tri de photos - Guide
- Il est trié sur la plateforme de départ ✓ - Forum Consommation & Internet
- Peut on récupérer un colis au centre de tri chronopost - Forum Consommation & Internet
4 réponses
yg_be
Messages postés
22764
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2024
1 480
14 mai 2020 à 14:32
14 mai 2020 à 14:32
bonjour,
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
il me semble que tu tries les scores, alors que tu souhaites sans doute trier les joueurs en fonction de leur score.
pour mieux comprendre ce que fais ton programme, pourquoi n'affiches-tu pas le tableau à chaque étape du tri?
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
il me semble que tu tries les scores, alors que tu souhaites sans doute trier les joueurs en fonction de leur score.
pour mieux comprendre ce que fais ton programme, pourquoi n'affiches-tu pas le tableau à chaque étape du tri?
ProgCnew
Messages postés
7
Date d'inscription
jeudi 14 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
14 mai 2020 à 15:11
14 mai 2020 à 15:11
Bonjour,
Désolé pour les balises de code , je ne connaissais pas, c'est la première fois que je m'inscrit dans un forum.
Dans un premier temps, on demande de créer le code pour faire un tableau en saisissant un nom puis un score. Ensuite, il est demandé de faire le tri décroissant des scores. Là le tri se fait mais les noms n'ont pas changer d'ordre. Donc l'auteur donne comme indice que dans son code à lui, il a rajouté joueurs[a] = joueurs[b]; mais je ne trouve pas le reste de l'astuce.
Désolé pour les balises de code , je ne connaissais pas, c'est la première fois que je m'inscrit dans un forum.
Dans un premier temps, on demande de créer le code pour faire un tableau en saisissant un nom puis un score. Ensuite, il est demandé de faire le tri décroissant des scores. Là le tri se fait mais les noms n'ont pas changer d'ordre. Donc l'auteur donne comme indice que dans son code à lui, il a rajouté joueurs[a] = joueurs[b]; mais je ne trouve pas le reste de l'astuce.
#include <stdio.h> #include <stdlib.h> #define TAILLE 4 int main() { struct scores { char nomJoueur[32]; int score; }; struct scores joueurs[4]; int x; for (x = 0; x<TAILLE; x++) { printf("Indiquer le joueur %d : ", x+1 ); scanf("%s", joueurs[x].nomJoueur); printf("Indiquer le son score : "); scanf("%d", &joueurs[x].score); } puts("Infos du joueur"); printf("#\tNom\tScore\n"); for(x = 0; x<TAILLE; x++) { printf("%d\t%s\t%5d\n", x+1, joueurs[x].nomJoueur, joueurs[x].score); } int interne, externe, temp; for(externe=0; externe<TAILLE-1; externe++) { for( interne=externe+1; interne<TAILLE; interne++) { if( joueurs[externe].score < joueurs[interne].score) { temp=joueurs[externe].score; joueurs[externe].score = joueurs[interne].score; joueurs[interne].score = temp; } } } puts("Tableau apres tri: "); for(x=0; x<TAILLE; x++) printf("%d\t%s\t%5d\n", x+1, joueurs[x].nomJoueur, joueurs[x].score); putchar('\n'); return 0; }
yg_be
Messages postés
22764
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2024
1 480
14 mai 2020 à 15:29
14 mai 2020 à 15:29
pour mieux comprendre ce que fais ton programme, pourquoi n'affiches-tu pas le tableau à chaque étape du tri?
à ton avis, que fait
à ton avis, que fait
joueurs[a] = joueurs[b];?
ProgCnew
Messages postés
7
Date d'inscription
jeudi 14 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
15 mai 2020 à 10:12
15 mai 2020 à 10:12
Bonjour,
J'ai réussi à faire apparaître les différentes étapes du tri, mais je n'ai toujours pas réussi à déplacer les noms de joueur qui correspondent au score. Je ne connais que le tri de tableau sur une colonne ou une ligne. Je suppose que joueurs[a] = joueurs[b] sert à convertir le tableau, mais je ne sais pas comment.
J'ai réussi à faire apparaître les différentes étapes du tri, mais je n'ai toujours pas réussi à déplacer les noms de joueur qui correspondent au score. Je ne connais que le tri de tableau sur une colonne ou une ligne. Je suppose que joueurs[a] = joueurs[b] sert à convertir le tableau, mais je ne sais pas comment.
yg_be
Messages postés
22764
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2024
1 480
15 mai 2020 à 10:14
15 mai 2020 à 10:14
qu'as-tu essayé pour déplacer les noms?
ProgCnew
Messages postés
7
Date d'inscription
jeudi 14 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
>
yg_be
Messages postés
22764
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2024
15 mai 2020 à 11:06
15 mai 2020 à 11:06
Pour commencer, j'ai essayé avec un tableau plus simple à deux colonnes comprenant déjà les prenoms et les scores. J'ai fais toutes sortes de modifs dans le "if" et dans le "temp" en rajoutant "prenom[TAILLE][x]".
Voici le tableau utilisé.
Voici le tableau utilisé.
#include <stdio.h> #include <stdlib.h> #define TAILLE 4 int main() {char joueurs[4]; char prenom[TAILLE][25] = {"Georges", "john", "Thomas ", "James"}; int score[TAILLE]= {1, 2, 3, 4}; int x, index; putchar('\n'); for(x=0; x<TAILLE; x++) { printf("%s\t%5d\n",prenom[x], score[x]); index++; } putchar('\n'); int interne, externe, temp; for(externe=0; externe<TAILLE-1; externe++) { for( interne=externe+1; interne<TAILLE; interne++) { for(x=0; x<TAILLE; x++) printf("%s\t%5d\n",prenom[x], score[x]); if(score[externe]<score[interne]) { temp= score[externe]; score[externe]= score[interne]; score[interne]=temp; } } } /* Affiche tableau après tri*/ puts("Tableau apres tri: \n"); for(x=0; x<TAILLE; x++) printf("%s\t%5d\n", prenom[x], score[x]); putchar('\n'); return 0; }
yg_be
Messages postés
22764
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2024
1 480
>
ProgCnew
Messages postés
7
Date d'inscription
jeudi 14 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
15 mai 2020 à 12:03
15 mai 2020 à 12:03
à quelle ligne as-tu essayé de déplacer les noms?
ProgCnew
Messages postés
7
Date d'inscription
jeudi 14 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
15 mai 2020 à 14:37
15 mai 2020 à 14:37
Je ne comprends pas trop bien comment le tri fonctionne. J'ai mis un "printf" avant le "if" et pourtant, je vois bien comment se placent le différents chiffres au fur et à mesure du tri. Je croyais que le programme évoluait ligne par ligne. Je me suis surtout axé à placer les noms après le "if" de différentes manières ou dans les accolades du "temp". Je ne vois vraiment pas comment lier les noms avec les scores. Je suis pas fait pour la programmation apparemment.
yg_be
Messages postés
22764
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2024
1 480
15 mai 2020 à 16:02
15 mai 2020 à 16:02
commence peut-être par des exercices plus simples, avec des nombres plutôt que des textes.
ProgCnew
Messages postés
7
Date d'inscription
jeudi 14 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
>
yg_be
Messages postés
22764
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2024
16 mai 2020 à 14:51
16 mai 2020 à 14:51
Oui, je vais reprendre tous ça , je n'ai pas tout bien assimilé, je vous le ferai savoir si un jour je trouve la solution.
merci à vous.
merci à vous.
ProgCnew
Messages postés
7
Date d'inscription
jeudi 14 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
>
ProgCnew
Messages postés
7
Date d'inscription
jeudi 14 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
19 mai 2020 à 18:55
19 mai 2020 à 18:55
Bonsoir,
J'ai enfin trouvé une solution qui fonctionne, j'étais vraiment mal parti, ça demande encore de l'entraînement.
J'ai enfin trouvé une solution qui fonctionne, j'étais vraiment mal parti, ça demande encore de l'entraînement.
#define TAILLE 4 int main() { struct scores { char nomJoueur[32]; int score; }; struct scores joueurs[4]; struct scores temp; int x, ex, in; for (x = 0; x<TAILLE; x++) { printf(" Indiquer le joueur %d : ", x+1 ); scanf(" %s", joueurs[x].nomJoueur); printf(" Indiquer le son score : "); scanf("%d", &joueurs[x].score); } putchar('\n'); puts(" Infos du joueur\n"); printf(" #\tNom\tScore\n"); for(x = 0; x<TAILLE; x++) { printf(" %d\t%s\t%5d\n", x+1, joueurs[x].nomJoueur, joueurs[x].score); } for(ex=0; ex<TAILLE-1; ex++) { for( in=ex+1; in<TAILLE; in++) { if( joueurs[ex].score < joueurs[in].score) { temp=joueurs[in]; joueurs[in] = joueurs[ex]; joueurs[ex] = temp; } } } puts(" Tableau apres tri: "); for(x=0; x<TAILLE; x++) printf(" %d\t%s\t%5d\n", x+1, joueurs[x].nomJoueur, joueurs[x].score); putchar('\n'); return 0; }
yg_be
Messages postés
22764
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 mai 2024
1 480
>
ProgCnew
Messages postés
7
Date d'inscription
jeudi 14 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
19 mai 2020 à 19:13
19 mai 2020 à 19:13
l'indice finit par prendre tout son sens...
peux-tu marquer la discussion comme résolue?
peux-tu marquer la discussion comme résolue?