Mon programme a 0 erreur(s) mais compile faux. Je ne sais plus d'où vient la fau

IHECinformaticien Messages postés 9 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 29 mars 2009 - 19 févr. 2009 à 22:31
RougailSaucisse Messages postés 118 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 décembre 2010 - 20 févr. 2009 à 05:03
Salut, je travaille sur le langage C. J'ai fais un programme ("très simple") et voila son énoncé:
 É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. Il compile sans aucune erreur mais il ne fonctionne pas correctement et voila le code source que j'ai écris: PRIÈRE CORRIGER LE ET MERCI D'AVANCE
#include<stdio.h>
void main()
{int n,i,k; 
char ch[9],ch1[9],Tc[4][9];
 for(i=0;i<=4;i++)
  {
     printf("donner le nom num %d\n",i);
         scanf("%s",Tc[i]);
      }
       for(i=0;i<=4;i++)
              {
                n=strcmp(Tc[i],Tc[i+1]);
                   if(n>=0)
                   k++;
                }
                       if(k>=0)
                       printf("Lordre alphabetique est vrai\n");
                            else if(k<0)
                               printf("Lordre alphabetique est faux\n");
}
 

1 réponse

RougailSaucisse Messages postés 118 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 décembre 2010 1
20 févr. 2009 à 05:03
beaucoup de chose.
1) tu utilises strcmp mais tu ne declares pas la librairie <string.h>
2) initialises tes variables et particulierement k=0
3) a quoi te servent ch[9] et ch1[9] la?
4) revoit tes indices de boucles si tu ne veux pas aller plus loin que l'indice max de ton tableau ( i < 4 pour la boucle 1 et i < 3 pour la boucle 2 par ex)
5) strcmp renvoie 1 si la premiere chaine est plus "grande" que la deuxieme, cad lorsque l'ordre alphabétique n'est pas respecté. 0 quand les chaines sont les mm et -1 quand la premiere est plus petit. ainsi tu n'a qu'a incrementer k uniquement quand strcmp > 0. Et dans ton teste final si k>0 alors c'est que l'ordre n'est pas juste sinon c'est juste.
0
Rejoignez-nous