Fonction strcmp()
souzen
Messages postés
41
Date d'inscription
Statut
Membre
-
blastrox -
blastrox -
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
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
Configuration: Windows XP Internet Explorer 6.0
4 réponses
-
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 -
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 -
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 -
#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 ;)