Bonjour je vous explique mon soucis.
Enfaite je dois demander à l'utilisateur :
- Combien d'utilisateur il doit saisir ( FAIT )
- Bloquer la saisie de façon à n'entrer que des noms en MAJUSCULE ( pas fait )
- Ranger par ordre alphabétique les noms saisis ( FAIT mais avec un problème)
dans mon code si j'utilise la fonction strcmp de la library string.h mon programme fonctionne mais mon prof souhaite que j'écrire la fonction strcmp . . . Et celle-ci une fois écrite ne range par correctement les noms saisis. De plus je ne comprends pas forcément ce que le return de la fonction strcmp fait... Mais je suis un peu perdu.
Par EXEMPLE si je saisi les 7 noms suivants :
-VANBUYTEN
-VANDENBROEK
-DUSCHMURZ
-DUPONTEL
-VANBOMMEL
-DUPONT
-VANBASCO
le programme va me ressortir :
DUSCHMURZ
DUPONTEL
DUPONT
VANBUYTEN
VANDENBROEK
VANBASCO
VANBOMMEL
Merci d'avance pour votre aide, je suis débutant.
Voici mon code
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 #include <stdio.h> #include <stdlib.h> //#include <string.h> int strcmp(char* s1[], char* s2[]); int programme(int nb_personne); int main() { //VARIABLE ENTIERE int nb_personne; //SAISIE DU NOMBRE DE PERSONNE printf("Veuillez entrer le nombre de personne que vous allez saisir.\n*CETTE SAISIE NE PEUT ETRE QUE DES CHIFFRES*\n\n"); scanf("%d", &nb_personne); //APPEL PROGRAMME programme(nb_personne); } int programme(int nb_personne) { int i,j; char nom[nb_personne][22]; char *tri[nb_personne]; char *temporary; //saisie printf("Entrez %d noms\n\n",nb_personne); for(i = 0; i <= nb_personne; i++) { gets(nom[i]); tri[i] = nom[i]; } //tri à bulles for(j = 0; j < nb_personne; j++) { for(i = 0; i < nb_personne;i++) //if(strcmp(tri[i],tri[i+1]) > 0) if(strcmp(tri[i], tri[i+1]) > 0) { temporary = tri[i]; tri[i] = tri[i+1]; tri[i+1] = temporary; } } //affichage printf("Voici la liste des personnes saisie triee dans l'ordre alphabetique\n"); for(i = 0; i <= nb_personne; i++) { printf("%s\n", tri[i]); } } int strcmp(char* s1[], char* s2[]) { while (*s1 != '\0' && (*s1++ == *s2++)); return (*((unsigned char *)--s1) < *((unsigned char *)--s2)) ? -1 : (*(unsigned char *)s1 != *(unsigned char *)s2); }
Partager