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 21303 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 mars 2023 - 19 mai 2020 à 19:13
yg_be Messages postés 21303 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 mars 2023 - 19 mai 2020 à 19:13
A voir également:
- Tri de tableaux de structure
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Dans la table des matières de ce document, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- Impossible d'afficher le rapport de tableau croisé dynamique sur un rapport existant ✓ - Forum Excel
- Tableaux croisés dynamiques - Guide
- Triez la liste comme sur cette illustration (attention, on ne voit que le début …). quel est le mot formé par les 6 dernières lettres de la colonne code ? - Forum Excel
4 réponses
yg_be
Messages postés
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
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
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
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
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
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
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
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
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
>
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
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
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
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
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
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
>
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?