[C] chaine de caractere

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [C] chaine de caractere

Message  Aftab007 le Sam 09 Oct 2010, 15:34

Bonjour , voila je suis entrain de faire le palindrome qui se trouve dans le TD2 ,
Mon but est de copier les ellements d un tableau dans un autre en retirant tous ce qui est ponctuations ,

Mais voila mon souci c 'est que quand jaffiche( après avoir copier les lettres sans ponctuations) le contenue de mon tableau de chaine en le parcourant d 'une traite , il maffiche des caractères qui ne devrais pas sy trouver dans ce tableau.

Tandis que si jaffiche caractère par caractère juste après avoir ajouter le caractère dans mon tableau , il maffiche bien ce qu il faut ( la chainne en minuscule sans ponctuations).

Code:


   while(i <= j){
      if((str[i]>='a' && str[i]<='z') || (str[i]>='A' && str[i]<='Z') || ( str[i]>='0' && str[i]<='9') ){
         if( str[i]>='A' && str[i]<='Z'){
            copyTableau[i]= str[i]+ ('a'-'A');
         /*    printf("%c\n",copyTableau[i]); */
         }else{
            copyTableau[i] = str[i];
                  /* printf("%c\n",copyTableau[i]); */
         }
      }
      i++;
   }
   copyTableau[j+1]='\0'; /* marquage de fin de chaine dans tableau */

   for(k = 0; k<=4;++k){
       printf("%c",copyTableau[k]);
   }

   

voila ce que jai comme chaine dans ma fonction main
Code:
    const char str[] = "EL,l!e";

Resultat a la console =>
el’lÿ

-------------------

Maintenant voici ce qui se passe quand j affiche carac par caractère direct après avoir placer dans a mon tableau =>

Code:



   while(i <= j){
      if((str[i]>='a' && str[i]<='z') || (str[i]>='A' && str[i]<='Z') || ( str[i]>='0' && str[i]<='9') ){
         if( str[i]>='A' && str[i]<='Z'){
            copyTableau[i]= str[i]+ ('a'-'A');
             printf("%c",copyTableau[i]);
         }else{
            copyTableau[i] = str[i];
             printf("%c",copyTableau[i]);
         }
      }
      i++;
   }
   copyTableau[j+1]='\0'; /* marquage de fin de chaine dans tableau */

/*   for(k = 0; k<=4;++k){
       printf("%c",copyTableau[k]);
   }
*/


dans ce cas il m' affiche bien ma chaine de caractère tranormer en minuscule sans ponctuations =>
elle


Voila donc si vous auriez une petite idee , ou peut etre une notions que je n' aurais pas comprise ?

je vous remerci en tous cas Smile

PS : jèspère que jai reussi a faire comprendre mon souci , car je sais que quand jai ecrit mes phrases du debut , j etais pas sur si cetais comprehenssible :p


Dernière édition par Aftab007 le Lun 11 Oct 2010, 16:02, édité 1 fois

Aftab007

Nombre de messages : 85
Age : 28
Prénom : Aftab
Date d'inscription : 27/11/2008

Revenir en haut Aller en bas

resolu Re: [C] chaine de caractere

Message  nvs le Sam 09 Oct 2010, 15:37

fidèle à la tradition des forums de namok, je n'ai lu que le début de ta question puis j'ai survolé le reste à la recherche de la réponse à une question que je me suis immédiatement posée : la chaîne
Code:
copyTableau
comment la déclares-tu ?



cyclops

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: [C] chaine de caractere

Message  Aftab007 le Sam 09 Oct 2010, 15:41

Merci

Je l' ai declarer ainsi =>

Code:
 

BOOL estChainePalindrome ( const char str [ ] ) {
   BOOL estPalyndrome;
   int i,j,k;
   char copyTableau [256];


Aftab007

Nombre de messages : 85
Age : 28
Prénom : Aftab
Date d'inscription : 27/11/2008

Revenir en haut Aller en bas

resolu Re: [C] chaine de caractere

Message  smb le Sam 09 Oct 2010, 18:38

C'est normal que ça ne marche pas car tu utilises le même indice pour parcourir la chaîne source (str) et pour copier dans la chaîne destination (copyTableau). Tu dois utiliser un autre indice pour copyTableau qui ne s'incrémente que lorsque tu y places effectivement une lettre ou un chiffre.

Algorithmique de 1ière il me semble ! Rolling Eyes

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

resolu Re: [C] chaine de caractere

Message  Aftab007 le Lun 11 Oct 2010, 16:02

Effectivement , j' avais complètement omis se détaille la ,

Merci Smile

Aftab007

Nombre de messages : 85
Age : 28
Prénom : Aftab
Date d'inscription : 27/11/2008

Revenir en haut Aller en bas

resolu Re: [C] chaine de caractere

Message  Contenu sponsorisé Aujourd'hui à 05:26


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum