Tri d'une chaine de caracteres
Source / Exemple :
/*
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)
{
tab[i]--;
ret++;
}
}
return retour;
}
7 nov. 2009 à 16:40
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
27 oct. 2003 à 17:07
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) ...
24 oct. 2003 à 15:48
22 oct. 2003 à 15:08
Si tu veux conserver cet algo, y'a 2 solutions : allouer 256 caractères pour "tab" (=> 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 (=> tu laisse tomber les caractères en dehors des limites)...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.