IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Trier avec des index


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Trier avec des index
    Bonjour, je recherche un moyen de trier par index avec les pointeurs

    Pourriez vous m'aidez ?

    Voici mon code :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    //---------------------------------------------------------------------------
     
    #include <stdio.h>
    #pragma hdrstop
     
    #include <tchar.h>
    //---------------------------------------------------------------------------
     
    #pragma argsused
     
     
    struct ageequipe{char nom[50] ;	int age;} ;
     
    struct ageequipe *equipe;
     
    struct ageequipe *index[10];
     
    int valeur = 0 ;
     
     
    void A()
    {
    	if(valeur<10)
    	{
    		printf("Entrez le nom du joueur %d :", ++valeur);
    		scanf("%s",equipe[valeur-1].nom);
    		printf("Entrez l'age du joueur %d :",valeur);
    		scanf("%d",&equipe[valeur-1].age);
     
    	}else
    	{
    		printf("\nIl y a trop de joueur\n\n\n");
    	}
     
    }
     
    void I()
     
    void L()
    {
    	int i;
    	for (i = 0; i < valeur; i++)
    	{
    	   printf(" Joueur %d\n",i+1);
    	   printf("     Nom: %s\n",equipe[i].nom);
    	   printf("     Age: %d ans\n",equipe[i].age);
    	}
    }
    void S ()
     
    	 {
    	   printf("\n\n");
    	   printf("\t~~ Merci et a bientot ~~");
           getchar();
    	   // Effacer l'écran:
    	  // system("cls");
         }
     
     
     
     
     
    int _tmain(int argc, _TCHAR* argv[])
    {   char choix;
    	equipe=NULL;
    	do
    	{
    		fflush(stdin);
    		printf("Appuyez sur\n");
    		printf("    A pour ajouter\n");
    		printf("    L pour lister\n");
    		printf("    I pour trier par Index\n");
    		printf("    S pour quitter\n");
     
    		printf("Entrez votre choix: ");
    		scanf("%c",&choix);
    		if (choix=='A')
    		{
    		   if(equipe==NULL)
    		   {
    				equipe=malloc(sizeof(struct ageequipe)*10);
    				A();
     
    		   }else
    			   A();
    		   }
    		else if (choix=='L')
    		 {
    		 	L();
    		 }else if (choix=='S')
    		 {
    			S(&equipe);
    		 }
     
     
    	} while((choix=='A')||(choix=='L')||(choix=='G'));
     
    	free(equipe);
    	getchar();
    	return 0;
     
    	}

    merci de votre aide.

  2. #2
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Bonjour,
    ta question est franchement peu claire, et ton morceau de code plutôt obscur. Plutôt que te fournir un morceau de code tout prêt qui s'insère parfaitement dans ton programme, nous te proposons de t'aider à définir un algo de tri qui corresponde à tes besoins.

    Alors, quels sont tes besoins ?
    -- Yankel Scialom

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Voilà, j'ai fait du code mais je le trouve long.

    Ici j'ai triée crée une fonction trié.

    Cette fonction trié mes joueur par nom. Mais j'ai un problème a la ligne 64
    . Il me dit : symbole age non défini mais je l'ai défini dans une structure.

    voici mon code :


    //---------------------------------------------------------------------------

    #include <stdio.h>
    #pragma hdrstop

    #include <tchar.h>
    //---------------------------------------------------------------------------

    #pragma argsused

    // ECRIRE UN PROGRAMME QUI AFFICHE , APPUIE SUR A POUR AJOUTER ET L POUR AFFICHER
    // ECRIRE UNE FONCTION QUI PARCOURE L EQUIPE ALORS DE 0 A -1

    struct ageequipe{char nom[50] ; int age;} ;
    struct membre1
    {
    struct membre *adresse;
    struct membre1 *suivant,*precedant;
    };

    struct ageequipe *equipe;

    struct ageequipe *index[10];

    int valeur = 0 ;


    void A()
    {
    if(valeur<10)
    {
    printf("Entrez le nom du joueur %d :", ++valeur);
    scanf("%s",equipe[valeur-1].nom);
    printf("Entrez l'age du joueur %d :",valeur);
    scanf("%d",&equipe[valeur-1].age);

    }else
    {
    printf("\nIl y a trop de joueur\n\n\n");
    }

    }


    void G(struct ageequipe **e)
    {
    struct membre1 *tete,*courant,*nouveau;
    int i,flag;
    if (valeur>0)
    {
    tete=malloc(sizeof(struct membre1));
    tete->adresse=&(*e)[0];

    tete->suivant=NULL;
    tete->precedant=NULL;
    courant=tete;

    if(valeur>1)
    {
    for (i = 1; i <valeur ; i++)
    {
    flag=0;
    courant=tete;
    if (((*e)[i].age) <= (tete->adresse->age))
    {
    nouveau=malloc(sizeof(struct membre1));
    nouveau->adresse=&(*e)[i];
    nouveau->precedant=NULL;
    nouveau->suivant=tete;
    tete->precedant=nouveau;
    tete=nouveau;
    nouveau=NULL;
    free(nouveau);
    courant=tete;
    }
    else
    {
    while ((courant->suivant!=NULL)&&(flag==0))
    {
    if(((*e)[i].age) <= (courant->adresse->age))
    {
    nouveau=malloc(sizeof(struct membre1));
    nouveau->adresse=&(*e)[i]; //& car adresse est = a l'adresse de e[i]
    nouveau->precedant=courant->precedant;
    nouveau->suivant=courant;
    courant->precedant=nouveau;
    nouveau=NULL;
    free(nouveau);
    flag=1;
    }
    courant=courant->suivant;
    }
    if (flag==0)
    {
    if(((*e)[i].age) <= (courant->adresse->age))
    {
    nouveau=malloc(sizeof(struct membre1));
    nouveau->adresse=&(*e)[i]; //& car adresse est = a l'adresse de e[i]
    nouveau->precedant=courant->precedant;
    nouveau->suivant=courant;
    courant->precedant->suivant=nouveau; // ne pas oublier de changer le pointeur suivant du precedant
    courant->precedant=nouveau; //car il pointer sur courant mais doit pointer sur nouveau, et courant-prec
    nouveau=NULL; //doit pointer sur nouveau
    free(nouveau);
    flag=1;
    }else
    {
    nouveau=malloc(sizeof(struct membre1));
    nouveau->adresse=&(*e)[i];
    nouveau->suivant=NULL;
    nouveau->precedant=courant;
    courant->suivant=nouveau;

    nouveau=NULL; //si pas nouveau=NULL et free, cela ecrase les données de tete ou les donné précedent
    free(nouveau);
    }
    }

    }
    }
    }
    courant=tete;
    for (i = 0; i < nombre; i++)
    {

    printf("%s\n",courant->adresse->nom);
    courant=courant->suivant;
    }
    }
    tete=NULL;
    free(tete);
    courant=NULL;
    free(courant);
    }


    void L()
    {
    int i;
    for (i = 0; i < valeur; i++)
    {
    printf(" Joueur %d\n",i+1);
    printf(" Nom: %s\n",equipe[i].nom);
    printf(" Age: %d ans\n",equipe[i].age);
    }
    }
    void S ()

    {
    printf("\n\n");
    printf("\t~~ Merci et a bientot ~~");
    getchar();
    // Effacer l'écran:
    // system("cls");
    }





    int _tmain(int argc, _TCHAR* argv[])
    { char choix;
    equipe=NULL;
    do
    {
    fflush(stdin);
    printf("Appuyez sur\n");
    printf(" A pour ajouter\n");
    printf(" L pour lister\n");
    printf(" I pour trier par Index\n");
    printf(" S pour quitter\n");

    printf("Entrez votre choix: ");
    scanf("%c",&choix);
    if (choix=='A')
    {
    if(equipe==NULL)
    {
    equipe=malloc(sizeof(struct ageequipe)*10);
    A();

    }else
    A();
    }
    else if (choix=='L')
    {
    L();
    }else if (choix=='S')
    {
    S(&equipe);
    }


    } while((choix=='A')||(choix=='L')||(choix=='G'));

    free(equipe);
    getchar();
    return 0;

    }
    //---------------------------------------------------------------------------
    merci de votre aide

Discussions similaires

  1. Peut-on créer un array avec des index de type String ?
    Par totoAussi dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 13/03/2012, 14h06
  2. Tableau javascript rempli avec des index d'un tableau array php.
    Par madina dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 13/08/2011, 17h40
  3. Est-il possible de travailler avec des index dans les checkboxes ?
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/12/2008, 12h31
  4. Réponses: 2
    Dernier message: 30/12/2006, 10h50
  5. Comment optimiser une lourde requête avec des index
    Par Romalafrite dans le forum Requêtes
    Réponses: 10
    Dernier message: 01/12/2006, 19h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo