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 mots d'une matrice


Sujet :

C

  1. #1
    Membre confirmé Avatar de dyala
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Par défaut tri de mots d'une matrice
    salut tout le monde
    j'ai une matrice de n mots chaque ligne contient un mot je veux trier cette matrice par apport le premier caractere de lignesi les premiers caractéres sont les meme je teste les caracteres suivants...etc, j'ai utiliser le tri par selection ..mais pendant l'exécution il m'affiche une erreure!
    voila le code
    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
    # include <stdio.h>
    # include <string.h>
    
    void main()
    {char a[10][20],min,ch[10],mot[10];
    int j,i,posmin,n, c,col;
    printf("donnez le nombre de mots\n");
    scanf("%d",&n);
    for (i=0;i<n;i++)
    gets(mot);
    /* utiliser la methode de tri par selection pour trier les premier caracteres de lignes*/
    col=0;
    for(i=0;i<n-1;i++){
    	  min =a[i][col];
    		posmin=i;
    	for (j=i+1;j<n;j++)
    		  {if(a[j][col]<min){min=a[j][col];
    				    posmin=j}
    	       /* le cas ou les deux chaine ont le mm premier caracter*/
    		for(c=1;a[j][col+1]==a[posmin][col+c];c++);	
                     if(a[j][col]==a[posmin][col])
    	{for(c=1;a[j][col+c]==a[posmin[col+c];c++);[col+c];c+=);
                  min=a[j][col];posmin=j;}
    		  /* permutation entre deux chaines de caracteres */
    		  strcpy(ch,a[i]);
    		  strcpy(a[i],a[posmin]);
    		  strcpy(a[posmin],ch);
    		  }}}}

  2. #2
    Membre expérimenté
    Profil pro
    Dev
    Inscrit en
    Décembre 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Décembre 2007
    Messages : 191
    Par défaut
    for(c=1;a[j][col+c]==a[posmin[col+c];c++);[col+c];c+=);

    si j'étais un compilateur, je n'aimerai pas non plus cette ligne

    1) le crochet de [posmin n'est pas fermé
    1) la syntaxe de for est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for ( instructionunique; comparaison ; instruction faite à chaque fin de boucle )
        instructionunique; ou {bloc }
    donc for ( ; ; )

    toi tu as mis for ( ; ; ); ; )

    peut être voulais tu faire plusieurs instructions à chaque fin de boucle ? dans ce cas là met les dans le bloc qui va avec de for, ça ne ralentit pas le programme et ça améliore la lisibilité.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for ( ; ; ) {
       uneinstruction;
       une autre;
       etc...
    }

  3. #3
    Membre confirmé Avatar de dyala
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(c=1;a[j][col+c]==a[posmin[col+c]];c++);[
    c ca

  4. #4
    Invité de passage
    Inscrit en
    Décembre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1
    Par défaut S@lam
    c pas grave mon premier message est effacer..dit tu peut me donner l'exo du tri par insertion..moi je l'ai fait mais j'ai voulu juste voir d'autre idee que la mien.. merci d'avence

    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
    main ()
    {char t[10][20],x[20];
     int n,i,j,ind;
     printf("donnez le nbre de mots\n");
     scanf ("%d",&n);
     printf("donnez les mots un par un\n");
     for (i=0;i<=n;i++)
          gets(t[i]);
     printf("vous avez entrer\n");
     for (i=0;i<=n;i++)
         {puts(t[i]);
          printf("\n"); 
         }
     for (i=0;i<=n;i++)
              {strcpy(x,t[i]);
               ind=i;
               for (j=i;j<=n;j++)
                    if (strcmp(t[j],x)<0) {strcpy(x,t[j]);
                                           ind=j;
                                          }
              if (ind!=i){strcpy(t[ind],t[i]);
                          strcpy(t[i],x);
                         }
             }
     printf("\n");
     printf("le tableau devien\n");
     for (i=0;i<=n;i++)
         {puts (t[i]);
          printf("\n");
         }
     scanf("%d");
    }

  5. #5
    Membre éclairé Avatar de archer
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    338
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 338
    Par défaut
    Salut
    Si vous voulez comparer deux chaînes de caractères directement vous pouvez utiliser l’une des fonctions suivantes :
    strcmp(chaine1,chaine2) elle retourne 0 si les deux chaînes sont identiques, un nombre supérieur à 0 si la 2éme chaîne est supérieure à la première et un nombre inférieur à 0 sinon. Cette fonction tient en compte la différence entre les majuscules et les minuscules
    strcmpi(chaîne1,chaîne 2) est pareille à la première sauf que celle-ci ne fait pas de différence entre les majuscules et les minuscules
    de ce fait tu peux utiliser l’un des tri que tu as fait déjà auparavant puis changer la comparaison entre les nombres par celle des chaînes de caractères
    NB: se sont des prototypes de string.h

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Citation Envoyé par archer
    Salut
    Si vous voulez comparer deux chaînes de caractères directement vous pouvez utiliser l’une des fonctions suivantes :
    strcmp(chaine1,chaine2) elle retourne 0 si les deux chaînes sont identiques, un nombre supérieur à 0 si la 2éme chaîne est supérieure à la première et un nombre inférieur à 0 sinon. Cette fonction tient en compte la différence entre les majuscules et les minuscules
    strcmpi(chaîne1,chaîne 2) est pareille à la première sauf que celle-ci ne fait pas de différence entre les majuscules et les minuscules
    de ce fait tu peux utiliser l’un des tri que tu as fait déjà auparavant puis changer la comparaison entre les nombres par celle des chaînes de caractères
    NB: se sont des prototypes de string.h
    strcmpi n'est pas standard.

Discussions similaires

  1. Localiser un mot dans une matrice
    Par macErmite dans le forum MATLAB
    Réponses: 5
    Dernier message: 23/10/2014, 18h19
  2. [Débutant] Tri de données dans une matrice et sélection
    Par lFantasyz dans le forum MATLAB
    Réponses: 6
    Dernier message: 05/05/2014, 10h36
  3. fonction qui lit un des mots d'une matrice
    Par Francky44003 dans le forum C
    Réponses: 11
    Dernier message: 12/09/2010, 15h02
  4. Tri d'une matrice spirale
    Par hacker33 dans le forum C
    Réponses: 11
    Dernier message: 13/05/2008, 19h46
  5. tri des valeurs d'une matrice
    Par suzanne loubert dans le forum Langage
    Réponses: 2
    Dernier message: 07/12/2005, 03h47

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