Je suis novice en C et j'ai un problème à résoudre.
Je dois créer une structure qui doit contenir le nom de 4 joueurs et leurs scores respectifs. Ensuite je dois trié ça de façon à obtenir les joueurs en ordre croissant de leur score.
Mais mon problème est que les noms des joueurs ne suivent pas les scores. Merci d'avance pour votre aide.
Voici ce que j'ai fait:
#include <stdio.h>
#include <string.h>
#define TAILLE 4
int main()
{
struct scores{char nomj[32]; int score;}joueurs[TAILLE];
Dans ton tri, tu échanges les scores, mais tu n'échanges pas les noms. Tu peux faire: struct scores temp = joueurs[externe]; joueurs[externe] = joueurs[interne]; joueurs[interne] = temp; On peut déplacer des structures complètes (à éviter quand elles sont trop grosses). Pour ta boucle externe, tu peux faire: for(externe=0; externe<TAILLE - 1; externe++) Ça ne sert à rien de comparer un élément avec lui-même et de toute façon la dernière boucle interne ne s'exécutera pas.
Le Tout est souvent plus grand que la somme de ses parties.
Merci de colorer votre code à l'aide du bouton Code
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.
Merci de modifier votre message d'origine en fonction. En image cela donne :
@AbcAbc6: ça peut devenir compliqué d'expliquer aux gens que je suis aveugle et que je n'ai pas accès au bouton </> code.
@JanickGauthier: j'ai "vu" ton code avant modération ...
Tu n'avais pas mis le test correctement dans le if, il fallait mettre > au lieu de < Voici mon code: - #include <stdio.h> #include <string.h> #define TAILLE 4 int main() { struct scores{char nomj[32]; int score;}joueurs[TAILLE]; for(int x=0; x<TAILLE; x++) { printf("Indiquer le joueur %d : ", x+1); scanf("%s", joueurs[x].nomj); printf("Indique son score : "); scanf("%d", &joueurs[x].score); } puts("Info de joueur"); printf("#\tnom\tScore\n"); for(int x=0; x<TAILLE; x++) { printf("%d\t%s\t%5d\n", x+1, joueurs[x].nomj, joueurs[x].score); } for(int externe=0; externe<TAILLE - 1; externe++) { for(int interne=externe+1; interne<TAILLE; interne++){ if(joueurs[externe].score > joueurs[interne].score) { struct scores temp = joueurs[externe]; joueurs[externe] = joueurs[interne]; joueurs[interne] = temp; } } } puts("Tableau apres tri : "); printf("#\tnom\tscore\n"); for(int x=0; x<4; x++) printf("%d\t%s\t%5d\n", x+1, joueurs[x].nomj,joueurs[x].score); putchar('\n'); return (0); } - Indiquer le joueur 1 : albert Indique son score : 5 Indiquer le joueur 2 : bernard Indique son score : 2 Indiquer le joueur 3 : claude Indique son score : 8 Indiquer le joueur 4 : daniel Indique son score : 6 Info de joueur # nom Score 1 albert 5 2 bernard 2 3 claude 8 4 daniel 6 Tableau apres tri : # nom score 1 bernard 2 2 albert 5 3 daniel 6 4 claude 8
- Edité par PierrotLeFou 14 février 2022 à 5:08:12
Le Tout est souvent plus grand que la somme de ses parties.
Je ne sais pas pourquoi @pierrot fait une fixette sur (contre) les structures, mais quoi qu'il en soit Il n'y a pas de "à éviter quand les structures sont grosses" qui tienne.
Soit on a besoin de copier la structure (tous ses champs), et l'affectation le fait très bien, de façon optimale. Soit il ne faut pas, et on ne le fait pas.
- Edité par michelbillaud 14 février 2022 à 8:24:58
J'avoue ne pas avoir précisé ma pensée. Quand les structures sont très grosses (je parle de centaines ou de milliers d'octets), il vaut mieux avoir un tableau de pointeurs vers ces structures. Dans ce cas, ce sont uniquement les pointeurs qui sont échangés.
Le Tout est souvent plus grand que la somme de ses parties.
@AbcAbc6: ça peut devenir compliqué d'expliquer aux gens que je suis aveugle et que je n'ai pas accès au bouton </> code.
En fait AbcAbc6 s'adressait à JanickGautier, qui n'avait pas utilisé l'éditeur de code. Mais je suppose que tu ne peux pas t'en rendre compte ? Du coup le malentendu est peut-être fréquent...
@PierrotLeFou La remarque de modération s'adressait bien à @JanickGautier comme l'indique @robun.
@PierrotLeFou et @rouloude Pourriez-vous continuer à discuter en message privé car la c'est hors sujet. Merci
Effectuer un trie sur une structure
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.