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 chaine de caractères


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1
    Par défaut Tri de chaine de caractères
    Bonjour à tous,

    Je debute mes cours en langage c et j'ai un devoir ou je dois ré-écrire le programme de tri de réels suivant en l'adaptant au tri de chaines de caractères :

    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
     
    main ()
    { int i,j,k,n;
      float t [100], x;
      prinft ("Combien y'a t il de nombres à trier:");
      scanf ("%d",&n);
      prinft ("Entrer les nombres:\n");
      for (i=0;i<n;i++)
        { printf ("t[%d]=",i);
           scanf "%f", &t[i]);
        }
      for (i=0;i<n;i++)
        { x=t[i]
           k=i;
           for (i=i+1;j<n;j++)
           if (x>t[j])
              { x=t[j];
                 k=j;
              }
           if (k!=i)
              { t[k]=t[i];
                 t[i]=x;
              }
        }
      for (i=0;i<n;i++)
      prinft ("t[%d]=%f\n",i,t[i]);
    }

  2. #2
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Bonjour,

    Utilise la balise CODE (# de la barre d'outils) pour encadrer ton code, ça améliore la lisibilité.

    Quel est ton problème, au juste ? Montre-nous ce que tu as déjà fait, et on t'aidera. Par contre, on ne fera pas l'exercice à ta place

  3. #3
    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 matie7
    Je debute mes cours en langage c et j'ai un devoir ou je dois ré-écrire le programme de tri de réels suivant en l'adaptant au tri de chaines de caractères :
    Ce serait mieux de poster du code qui compile...
    Project : Forums
    Compiler : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:2: warning: return type defaults to `int'
    main.c: In function `main':
    main.c:4: warning: implicit declaration of function `prinft'
    main.c:5: warning: implicit declaration of function `scanf'
    main.c:8: warning: implicit declaration of function `printf'
    main.c:9: error: syntax error before string constant
    main.c:13: error: syntax error before "k"
    main.c:26:2: warning: no newline at end of file
    Process terminated with status 1 (0 minutes, 3 seconds)
    2 errors, 5 warnings
    Ta question, c'est quoi déjà ?

    pas très clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             for (i = i + 1;j < n;j++)
    Alors, c'est i ou c'est j ?

    Après quelques corrections :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Combien y'a t il de nombres Ó trier:4
    Entrer les nombres:
    t[0]=4.1
    t[1]=2.5
    t[2]=7.2
    t[3]=3.8
    t[0]=2.500000
    t[1]=3.800000
    t[2]=4.100000
    t[3]=7.200000
     
    Press ENTER to continue.
    C'est encourageant...

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonsoir,

    il manque une parenthèse au scanf et un point virgule un peu plus loin.

    Corrige déjà les erreurs de compilation
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut bonjour, meme exercie: meme probleme!
    Bonjour!
    Je crois que nous fesont le meme exercice en ce moment...
    Je suppose que votre formation est fournie par Educatel??
    en tout cas cet exercice est le meme que le miens et je bloc un peut dessus aussi à partir du moment ou il faut commencer a trier ..
    Pour ceux qui n'auraient pas compris la consigne est simple, avec l'algorythme suivant qui tri des réels, ils faut le changer pour l'adapter au tri de chaines de caracteres. C'est simple.
    La partie de tri est assez sombre pour moi, si quelqu'un peu donner de sa bonne volonté
    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 50
    Par défaut
    Si j'ai bien compris vous devez trier des caractere genre "a,c,b,d" dans le bon ordre?

    Eh bien il suffit de regarder le code ASCII du caractere en question et ca devient un tri de réels tout simplement.
    Enfin je dit ca mais ce n'est peut etre pas ca du tout ....

    Je suis pas un bon mais voilà une petite idée pour le tri à un tableau ( pas matrice)

    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
     
    #DEFINE n 10000
     
    int i,k,tab[n]
     
    printf("combien d'éléments?");
    scanf("%d",&nbr);
    // On rempli
    for(i=0;i<nbr;i++)
    {
    printf("Entrez valeur\n");
    scanf("%d",&tab[i]);
    }
     
    // On trie
    for(int i=0;i<nbr;i++)
    {
     
    if(tab[i]>tab[i++])
    {
    k=tab[i];
    tab[i]=tab[i++];
    tab[i++]=k;
    i=0
    }
     
    }

  7. #7
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    De quoi dépend un algo de tri ?
    1- De la comparaison de deux éléments à trier
    cette expression valable pour des nombres doit être adaptée pour des chaînes de caractères : voir la fonction strcmp
    2 - De l'échange des données pour les mettre à une bonne place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
           x=t[i]
           k=i;
           for (j=i+1;j<n;j++)
           if (x>t[j])
              { x=t[j];
                 k=j;
              }
           if (k!=i)
              { t[k]=t[i];
                 t[i]=x;
              }
    Si les chaînes sont repérées par leur adresse (t[i] est un tableau d'adresse des chaînes), échanger leur adresse -> rien à faire qu'à adapter les types des données.

Discussions similaires

  1. Probleme de tri de chaine de caractere...
    Par GESCOM2000 dans le forum Access
    Réponses: 12
    Dernier message: 28/12/2005, 13h43
  2. Réponses: 17
    Dernier message: 16/12/2005, 09h45
  3. Réponses: 5
    Dernier message: 15/11/2005, 12h57
  4. Réponses: 3
    Dernier message: 08/08/2005, 11h24
  5. Réponses: 10
    Dernier message: 22/05/2004, 13h51

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