begin process at 2012 05 27 21:05:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > TRI D'UNE CHAINE DE CARACTERES

TRI D'UNE CHAINE DE CARACTERES


 Information sur la source

 Description

Tri d'une chaine de caracteres

Source

  • /*
  • Name:
  • Copyright:
  • Author:
  • Date: 11/06/03 13:30
  • Description: Tri d'une chaine de caracteres.
  • */
  • #include<stdio.h>
  • #include<stdlib.h>
  • #define MAX 50
  • char *tri(char *chaine,char *retour);
  • main()
  • {
  • char chaine[MAX],retour[MAX];
  • printf("\n Entrez votre chaine :");
  • gets(chaine);
  • printf("\n La chaine triee : %s",tri(chaine,retour));
  • getch();
  • }
  • char *tri(char *chaine,char *retour)
  • {int tab[26],i,j;
  • char *ret;
  • ret=retour;
  • for(i=0;i<26;i++)
  • tab[i]=0;
  • i=0;
  • while(chaine[i] != '\0')
  • {
  • j=(chaine[i]-'a');
  • tab[j]++;
  • i++;
  • }
  • for(i=0;i<26;i++)
  • {
  • while(tab[i] != 0)
  • {
  • *ret = 'a'+i;
  • tab[i]--;
  • ret++;
  • }
  • }
  • *ret='\0';
  • return retour;
  • }
/*
  Name: 
  Copyright: 
  Author: 
  Date: 11/06/03 13:30
  Description: Tri d'une chaine de caracteres.
*/


#include<stdio.h>
#include<stdlib.h>
#define MAX 50

char *tri(char *chaine,char *retour);

main()
{
char chaine[MAX],retour[MAX];

printf("\n Entrez votre chaine :");
gets(chaine);
printf("\n La chaine triee : %s",tri(chaine,retour));
getch();
}


char *tri(char *chaine,char *retour)
{int tab[26],i,j;
char *ret;
ret=retour;
for(i=0;i<26;i++)
    tab[i]=0;
i=0;
while(chaine[i] != '\0')
    {
    j=(chaine[i]-'a');
    tab[j]++;
    i++;
    }
for(i=0;i<26;i++)
    {
    while(tab[i] != 0)
        {
        *ret = 'a'+i;
        tab[i]--;
        ret++;
        }
    }
*ret='\0';
return retour;
}



 Sources du même auteur

CALCUL D'AGE
NOMBRE DE FIBONACCI
CALCUL DE NOMBRE PREMIER
EQUATION DU DEUXIEME DEGRE
LISTE CHAINEE DE NOMBRE TRIE

 Sources de la même categorie

CALCUL DE CLEF RIB par Renfield
Source avec Zip [C] WD_STRING V2.2 par cyberripper
Source avec Zip LES STRING EN C, AFFECTATION, CONCATÉNATION, SPLIT, ... par appranting
Source avec Zip [C] WD_STRING V1.9 par cyberripper
Source avec Zip LIBRAIRIE LANGUAGES par astro53

Commentaires et avis

Commentaire de gillig le 22/10/2003 15:08:25

Sans l'avoir testé, j'ai l'impression que ce code est buggé : dans la boucle de remplissage de "tab", pour des caractères &lt; 'a', j &lt; 0 ! Pour des caractères &gt; 'z', j &gt; 25 et on est à nouveau hors-tableau !

Si tu veux conserver cet algo, y'a 2 solutions : allouer 256 caractères pour "tab" (=&gt; taux d'utilisation de la mémoire allouée assez faible, mais bon ça ne fait qu'1 Ko), ou bien vérifier que j est dans les bonnes limites (=&gt; tu laisse tomber les caractères en dehors des limites)...

Commentaire de gochardl le 24/10/2003 15:48:59

Le code fonctionne tres bien avec des caracteres allant de a à z !

Commentaire de gillig le 27/10/2003 17:07:43

C'est ce que je dis, le code fonctionne, mais il ne fonctionne QU'avec des caractères de 'a' à 'z' !

Si on rentre un espace, une majuscule ou un chiffre par exemple :
- ce caractère ne va pas être restitué dans la chaine triée retournée, ce qui n'est pas encore trop grave, même si on peut s'étonner qu'il disparaisse...
- le plus grave, c'est que le programme écrit dans de la mémoire qui ne lui appartient pas (tab[j]++; avec j hors limite) ...

Commentaire de jingel2009 le 07/11/2009 16:40:54

Comment faire afficher une chaine de caractere un à un en C sous
linux je connais en pascal mais pas en C;mon probleme ce ke je
utilise le fonction delay et il attend et après affiche tous
les caractere mais pas un à un.Merci de votre aide

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales