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

C Discussion :

Tri de chaines de caracteres [Débutant(e)]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Par défaut Tri de chaines de caracteres
    Bonjour, j'ai un exercice a faire pour la semaine prochaine et depuis quelques jours je calle a un endroit sans trouver de solution..

    Le but de l'exercice est d'introduire un max de 20 prénoms dans un vecteur en gardant l'adresse de chaque élément introduit dans un autre vecteur de pointeurs. Le tri doit etre effectué exclusivement a partir du vecteur contenant les adresses sans toucher au vecteur des prénoms.

    Voici une partie du main :

    Code : 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
    		case 1:
    			iContinue=1;
    			while(i<MAX && iContinue==1)
    			{
    				printf("Entrez un prenom: ");
    				SaisirPrenom(&v[i][0]);
    				ad[i]=&v[i][0];
    				i++;
    				printf("Continuer(1-oui/2-non)? ");
    				scanf("%d",&iContinue);
    			}
    			break;
    		case 2:
    			j=0;
    			printf("ADRESSE   PRENOM\n\n");
    			while(j!=i)
    			{
    				printf("%d   %s\n",&v[j][0],&v[j][0]);
    				j++;
    			}
    			break;
    		case 3:
    			printf("ADRESSE   PRENOM\n\n");
    			TrierPrenoms(&v[0][0],ad[0]);
    			break;
    Je doit donc créer une fonction qui me permettra de trier les prénoms grace au vecteur *ad est-ce que quelqu'un pourrai m'aider?

    Merci d'avance..

  2. #2
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Serait-il possible d'avoir tout le code, ne serait-ce que pour connaître les types des variables utilisées?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Par défaut
    voici mon programme:

    Code : 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
    104
    105
    106
    107
    108
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<ctype.h>
     
    #define MAX 20
     
    void SaisirPrenom();
    void TrierPrenoms();
    void strtoupper();
    void CopierAdresse();
     
    void main()
    {
    	char v[MAX][MAX],
    		*ad[MAX];
    	int i=0,
    		j,
    		iContinue,
    		choix;
     
    	do
    	{
    		printf("\nMENU\n\n");
    		printf("1-Ajouter des prenoms\n");
    		printf("2-Afficher les prenoms non tries\n");
    		printf("3-Afficher les prenoms tries\n");
    		printf("4-Rechercher un prenom dans la liste\n");
    		printf("5-Quitter l'application\n");
    		printf("Votre choix: ");
    		scanf("%d",&choix);
    		system("cls");
     
    		switch(choix)
    		{
    		case 1:
    			iContinue=1;
    			while(i<MAX && iContinue==1)
    			{
    				printf("Entrez un prenom: ");
    				SaisirPrenom(&v[i][0]);
    				ad[i]=&v[i][0];
    				i++;
    				printf("Continuer(1-oui/2-non)? ");
    				scanf("%d",&iContinue);
    			}
    			break;
    		case 2:
    			j=0;
    			printf("ADRESSE   PRENOM\n\n");
    			while(j!=i)
    			{
    				printf("%d   %s\n",&v[j][0],&v[j][0]);
    				j++;
    			}
    			break;
    		case 3:
    			printf("ADRESSE   PRENOM\n\n");
    			TrierPrenoms(&v[0][0],ad[0]);
    			j=0;
    			while(j!=i)
    			{
    				printf("%d   %s\n",ad[j],ad[j]);
    				j++;
    			}
    			break;
    		case 5:
    			printf("Au revoir!\n");
    			break;
    		default:
    			printf("Choix inconnu,recommencez...");
    		}
    	}while(choix!=5);
    }
     
    void SaisirPrenom(char *pc)
    {
    	char c;
    	int i=0;
     
    	fflush(stdin);
    	c=getchar();
    	*pc=c;
    	*pc=toupper(*pc);
    	while((i<MAX-1) && (c!='\n'))
    	{
    		pc++;
    		i++;
    		c=getchar();
    		*pc=c;
    		if(*(pc-1)=='-')
    		{
    			*pc=toupper(*pc);
    		}
    	}
    	*pc='\0';
    }
     
    void TrierPrenoms(char *pc, char *pa)
    {
    	if(*pc>*(pc+MAX))
    	{
    		pa=pa+MAX;
    		printf("%d   %s\n",pa,pa);
    		pa=pa-MAX;
    		printf("%d   %s\n",pa,pa);
    	}
    }
    La fonction TrierPrenoms n'est pas bonne c'etait juste pour tester un tri avec 2 prénoms..

  4. #4
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    La méthode de tri vous est-elle imposée? Je suppose que vous n'avez pas le droit d'utiliser la fonction qsort, n'est-ce pas?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Par défaut
    Non il n'y a aucune méthode de tri imposée sinon pour la fonction qsort je pense qu'on peux l'utiliser car on en a parlé aux cours mais je n'ai encore jamais essayé cette fonction

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par oMeG4
    Le but de l'exercice est d'introduire un max de 20 prénoms dans un vecteur en gardant l'adresse de chaque élément introduit dans un autre vecteur de pointeurs. Le tri doit etre effectué exclusivement a partir du vecteur contenant les adresses sans toucher au vecteur des prénoms.

    Je doit donc créer une fonction qui me permettra de trier les prénoms grace au vecteur *ad est-ce que quelqu'un pourrai m'aider?
    qsort() permet de trier n'importe quel tableau selon des critères définis par l'utilisateur. C'est pas trivial, mais ça marche très bien. Bien lire la doc.

    http://man.developpez.com/

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 466
    Par défaut
    Sinon tu peu faire via liste chainé

  8. #8
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par spawntux
    Sinon tu peu faire via liste chainé
    Niveau performance il n'y a pas pire.

    La combinaison gagnante est qsort et bsearch

Discussions similaires

  1. probleme tri fusion chaine de caractere
    Par G4uthier dans le forum C
    Réponses: 0
    Dernier message: 30/05/2009, 16h17
  2. Tri de chaine de caractères
    Par matie7 dans le forum C
    Réponses: 7
    Dernier message: 14/12/2007, 00h53
  3. Tri Chaine De Caracteres ?
    Par A_B dans le forum C
    Réponses: 5
    Dernier message: 04/03/2007, 03h11
  4. Probleme de tri de chaine de caractere...
    Par GESCOM2000 dans le forum Access
    Réponses: 12
    Dernier message: 28/12/2005, 13h43
  5. Probleme de tri de chaine de caractere...(BIS)
    Par GESCOM2000 dans le forum Access
    Réponses: 4
    Dernier message: 27/12/2005, 18h49

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