Fonction strcmp()

Fermé
souzen Messages postés 41 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 5 janvier 2009 - 29 oct. 2008 à 22:59
 blastrox - 27 janv. 2011 à 12:24
Bonjour,
Aidez moi a faire ce petit programme,il s'agit de definir une fonction strcmp() qui permet de comparer deux chaines de caractères selon l'ordre alphabétique
la fonction doit retourner:
-un nombre negatif quelconque si la 1ere chaine precède la 2eme en ordre alphabétique
-0 si les deux chaines sont egales
-un nombre positif quelconque si ma 1ere chaine est superieur a la 2eme
N.B:T1<T2 si les deux chaines commencent par les memes caractères(0 ou plusieurs) et à un certain moment on trouve dans T1 un caractère inférieur a celui de T2.
s'il vous plait aidez moi a faire cette fonction
j'ai plusieurs fonction a faire et je risque de ne pas avoir assez de temps pr tous
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
30 oct. 2008 à 00:11
Re,
Je t'ai fait un petit code vite fait. J'espère que ça te conviendra.
int comp(char *p1, char *p2){
    int ret;
    while(*p1==*p2 && *p1 && *p2) p1++,p2++;
    if(!(ret=*p1-*p2)) return 0;
    return ret>0?1:-1;
}

int main(void){
    char mot1[MAX],mot2[MAX];
    printf("mot1 : ");
    fgets(mot1,sizeof mot1,stdin);
    printf("mot2 : ");
    fgets(mot2,sizeof mot2, stdin);
    printf("comp=%d\n",comp(mot1,mot2));
    return 0;
}

Cdlt
4
souzen Messages postés 41 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 5 janvier 2009 26
29 oct. 2008 à 23:11
bon pour lalgorithme, il faut comparer le code ascii des deux premieres lettres des deux chaines de caractères jusqu'à ce qu'on trouve un code ascci inferieur ou superieur a l'autre
par exemple: portrait et portable
il commence par les memes lettres (port)
mais dans la 5eme lette on a (a<r)
donc portable<portrait
je trouve des difficultés de rediger ca en langage C
1
salut..
faites au moin les decl,les lectures et des petits test..
@
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
29 oct. 2008 à 23:07
Salut,
Si tu veux qu'on t'aide, il faudrait commencer par poster le code que tu as fait, ou le début d'algorithme et nous dire ce qui bloque.
Cdlt
0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
short resultat;
char mot1[26];
char mot2[26];

printf("Entrez deux mots \n");
printf("Mot Numero 1 :");
fflush(stdin);
scanf("%s", &mot1);
printf("Mot Numero 2 :");
fflush(stdin);
scanf("%s", &mot2);



resultat = strcmp(mot1,mot2);
printf(" Valeur du resultat : %hd\n", resultat); // afficher le resulat pour savoir la valeur !

if(resultat<0)
{
printf("Ordre Alphabetique : \n");
printf("( 1 ) Mot1 : %s\n", mot1);
printf("( 2 ) Mot2 : %s\n", mot2);
}

else if (resultat==0)
{
printf("Ordre Alphabetique : \n");
printf("( 1 ) Mot1 : %s\n", mot1);
printf("( 1 ) Mot2 : %s\n", mot2);
printf("Ils sont identiques\n");
}

else
{
printf("Ordre Alphabetique : \n");
printf("( 1 ) Mot1 : %s\n", mot2);
printf("( 2 ) Mot2 : %s\n", mot1);
}
}

Voilà un bout de code simplifier qui pourra peut être t'aider et comprendre ;)
0