Bonsoir,
Merci de m'aider à résoudre cet exercice.
Écrire un programme qui remplit un tableau de noms ensuite en parcourant le tableau vérifie si l’ordre alphabétique est respecté entre deux noms successifs et affiche le résultat.
Bonsoir,
Merci de m'aider à résoudre cet exercice.
Écrire un programme qui remplit un tableau de noms ensuite en parcourant le tableau vérifie si l’ordre alphabétique est respecté entre deux noms successifs et affiche le résultat.
Bonsoir,
Les fonctions strcmp() et strncmp() sont tes amies.
Merci b1
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 #include "stdafx.h" #include<stdio.h> #include<string.h> #define TRUE 1 #define FALSE 0 void main() { char t[100]; int i,j,n; int tri = TRUE; printf("nb de mots"); scanf("%d",&n); for(i = 0 ; i < n; i++) { printf("mot %d \n",i); scanf("%s",&t[i]); } for(j = 0 ; j < n-1 ; j++) { if(t[j]>t[j+1]) { tri = FALSE; } }getchar(); if (tri==FALSE) {printf("nn les noms ne sont pas triés alphabéthiquement");} if (tri==TRUE) {printf("oui les noms sont triés alphabétiquement");} getchar(); }
j ai essayé tout seul d'écrire ce code mais à l'exécution il vérifie juste le tri pour la première lettre et nn pas pour tous les lettres.
c a dire pour lui cette liste de mots est triée :
arbre
beau
carole
foot
et cette liste de meme (alors que ne doit pas l'etre)
arbre
animal
attention
Ta méthode de lecture des mots est fausse :
Si tu entres
"arbre
beau
carole
foot"
et que tu regardes ce que contient le tableau t[], tu auras : "abcfoot"
Pour
"arbre
animal
attention"
tu as "aaattention"
En fait, après la première entrée, il contient : "arbre"
ensuite, tu mets la deuxième entrée à partir de l'élément 1 et tu as "aanimal" etc.
Il te faut non pas un tableau de caractères, mais un tableau de tableaux de caractères
Salut, bienvenue sur le forum.
Obsidian t'as donné la réponse avec strcmp.
Reste juste maintenant à lire des chaines de caractères. Pour cela, j'utiliserais strdup() (non portable). N'oublie pas ensuite de faire un free() après strdup()
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 #include <stdlib.h> #include <stdio.h> #include <string.h> int main(void) { char * tab[] = {"titi","tutu","toto","arbre","arme"}; char * tab2[] = {"toto","toto1","toto2","xylophone","zebre"}; int i; int n = sizeof tab / sizeof * tab; int n2 = sizeof tab2 / sizeof * tab2; int ok = 1; for(i = 1 ; i < n ; i++) { if(strcmp(tab[i-1],tab[i]) > 0) { ok = 0; break; } } printf("ok = %d\n",ok); ok = 1; for(i = 1 ; i < n2 ; i++) { if(strcmp(tab2[i-1],tab2[i]) > 0) { ok = 0; break; } } printf("ok = %d\n",ok); return 0; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager