Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3420 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  pour voir si un caract est un expace, tab ou enter

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pour voir si un caract est un expace, tab ou enter

n°302735
eraser17
Posté le 05-02-2003 à 22:26:51  profilanswer
 

on peux mettre ca?
 
if ((c==' ';)||(c=='/n';)||(c=='/t';))
 
paske ca a l'air de pas marcher.

mood
Publicité
Posté le 05-02-2003 à 22:26:51  profilanswer
 

n°302738
Taz
bisounours-codeur
Posté le 05-02-2003 à 22:27:55  profilanswer
 

t'y étais presque... les caractères d'échappement, c'est un backslash donc '\n' et '\t'

n°302744
eraser17
Posté le 05-02-2003 à 22:32:05  profilanswer
 

++Taz a écrit :

t'y étais presque... les caractères d'échappement, c'est un backslash donc '\n' et '\t'


 
effectivement  :whistle: merci
 
mais ca marche tjr pas. donc j'ai du faire une autre connerie
 
en vitesse comme ca personne ne voit?
 

Code :
  1. while((d=getc(texte))!=EOL)
  2.  {
  3.    test=1;
  4.    tot++;
  5.    c=tolower(d);
  6.    for(j=0; j<i; j++)
  7.      {
  8.     if ((c==' ')||(c=='\n')||(c=='\t')){v++;}
  9.     else
  10.    {
  11.      if (c==tab[j].s)
  12.      {
  13.        tab[j].n++;
  14.        test=0;
  15.        break;
  16.      }
  17.   
  18.            if(test)
  19.    {
  20.      tab[i].s=c;
  21.      tab[i].n=1;
  22.      i++;
  23.    }
  24.     }
  25.    }
  26. }

n°302754
Taz
bisounours-codeur
Posté le 05-02-2003 à 22:35:20  profilanswer
 

je comprends pas trop ton code vu qu'il est incomplet et que tu ne dis pas ou est le problème. une seule chose: la fin de fichier c'est EOF et pas EOL (inconnu au bataillon d'ailleurs)
 
edit: quand test=0, la boucle ewt breakée, donc le code if(test) ne s'executera jamais


Message édité par Taz le 05-02-2003 à 22:36:32
n°302759
eraser17
Posté le 05-02-2003 à 22:38:26  profilanswer
 

++Taz a écrit :

je comprends pas trop ton code vu qu'il est incomplet et que tu ne dis pas ou est le problème. une seule chose: la fin de fichier c'est EOF et pas EOL (inconnu au bataillon d'ailleurs)


 
en fait c un code qu'un pote a fait et j'essaye de rajouter des trucs par dessus. mais ca foire sur certain point.
 
dans ce cas le prob c'est le passage que j'ai rajouté
 
if ((c==' ';)||(c=='\n';)||(c=='\t';)){v++;}  
    else  
 
sans ca ca marche mais avec ca en resultat j'ai le bon nombre de caractere (tot)  mais v reste a 0 et le tablo n'affiche rien, ni les lettre ni les nombres d'apparition de chaque lettre.

n°302763
eraser17
Posté le 05-02-2003 à 22:42:01  profilanswer
 

et pour le code complet
 

Code :
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #define EOL '~'
  4. #define NMAX 1000
  5. struct signe
  6. {
  7.   char s;
  8.   int n;
  9. };
  10. void tri(struct signe x[100])
  11. {int i, perm=1;
  12. struct signe tmp;
  13. while(perm=1){
  14. perm=0;
  15. for (i=0;i<40;i++){
  16.  if(x[i].s>x[i+1].s){
  17.   tmp=x[i];
  18.   x[i]=x[i+1];
  19.   x[i+1]=tmp;
  20.   perm=1;
  21.  }
  22. }
  23. }
  24. }
  25. void stat(struct signe tab[100], int x)
  26. {int j,t,i=100,f;
  27. t=100/x;
  28. for(j=0; j<i; j++)
  29. {f=tab[j].n*t;
  30. tab[j].n=f;
  31. }
  32. }
  33. void main ()
  34. {
  35. FILE *texte;
  36. struct signe tab[100];
  37. char c, d, txt[40];
  38. int tot=0, i=0, j, test, v=0;
  39. //printf("\nintroduisez le nom du fichier a analyser:\n" );
  40. //gets(txt);
  41. texte=fopen ("texte.txt","r" );
  42. while((d=getc(texte))!=EOL)
  43.  {
  44.    test=1;
  45.    tot++;
  46.    c=tolower(d);
  47.    for(j=0; j<i; j++)
  48.      {
  49.     if ((c==' ')||(c=='\n')||(c=='\t')){v++;}
  50.     else
  51.    {
  52.      if (c==tab[j].s)
  53.      {
  54.        tab[j].n++;
  55.        test=0;
  56.        break;
  57.      }
  58.   
  59.            if(test)
  60.    {
  61.      tab[i].s=c;
  62.      tab[i].n=1;
  63.      i++;
  64.    }
  65.     }
  66.    }
  67. }
  68. //tri(tab);
  69. //stat(tab,tot);
  70. printf("\n\n\nCaractere\tNombre" );
  71. for(j=0; j<i; j++)
  72.  {
  73.    printf("\n%c\t\t%d",tab[j].s, tab[j].n);
  74.  }
  75. printf("\n\nTotal de caracteres: %d\n\n", tot);
  76. printf("%d\n",v);
  77. fclose(texte);
  78. }


 
bon faut pardonner le faible nivo mais ca fait 10 mois qu'on avait plus toucher a la prog et on a fait ca sur le tas aujourd'hui faut le temps de s'y remettre.

n°302774
Taz
bisounours-codeur
Posté le 05-02-2003 à 22:47:32  profilanswer
 

tu ferais bien de tester la fin de fichier en plus de EOL. et indentes un peu, je suis fatigué et ton code est asez illisible
 
et puis ce genre de prototyp c'est bof
void stat(struct signe tab[100], int x)
 
d'habitude on ecrit
void stat(struct signe *tab, size_t n_elements, int x, ....) au cas ou les éléments de tab sont modifiés.
 
et void stat(const struct signe *tab, ....) dans le cas contraire

n°302781
eraser17
Posté le 05-02-2003 à 22:54:56  profilanswer
 

ok mais j'arrive tjr pas a obtenir un resultat, l'execution du prog me donne
 
 
 
 

Caractere       Nombre
 
Total de caracteres: 2777
 
0
Press any key to continue

n°302782
Taz
bisounours-codeur
Posté le 05-02-2003 à 22:56:20  profilanswer
 

ben c'est on algo, deroule à la main

n°302787
Carbon_14
Posté le 05-02-2003 à 22:59:43  profilanswer
 

Mon niveau n'est pas meilleur, mais un truc me "choque" en regardant de près :
au début i vaut 0
puis la boucle
for(j=0; j<i; j++) part de j = 0 et s'arrête à i - 1
donc au premier tour, on n'y passe pas dans cette boucle, donc on n'incrémente pas i, donc il reste nul, donc le for(j=0; j<i; j++) n'aura jamais lieu, donc i restera à zéro tout le temps.
Du moins il me semble. :ange:  :D  
 
Y a un truc qui m'"arrache" les yeux ;) (mais suis qu'amateur auto-didacte donc suis pas très fortiche) :
void tri(struct signe x[100]) la dimension 100, elle sert à quoi ? Le tableau peut passer sous forme de pointeur, vu qu'il doit déja être dimensionné en externe avant appel.
             
           

mood
Publicité
Posté le 05-02-2003 à 22:59:43  profilanswer
 

n°302796
eraser17
Posté le 05-02-2003 à 23:11:00  profilanswer
 

heu ouai je crois que je vais refaire tout le code ca sera plus simple paske la y a rien qui marche.
 

n°302851
Musaran
Cerveaulté
Posté le 06-02-2003 à 05:46:26  profilanswer
 

Code :
  1. if( (c==' ')||(c=='\n')||(c=='\t') ) ...


:non:

Code :
  1. #include <ctype.h>
  2. if( isalpha(c) ) ...

Edit: J'avais mis isampha.


Message édité par Musaran le 07-02-2003 à 05:02:51

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°302860
Taz
bisounours-codeur
Posté le 06-02-2003 à 06:38:06  profilanswer
 

islpha

n°302865
eraser17
Posté le 06-02-2003 à 07:23:16  profilanswer
 


 
isalpha   :whistle:  
 
mais merci quand meme.

n°303096
Taz
bisounours-codeur
Posté le 06-02-2003 à 13:06:24  profilanswer
 

:lol:

n°303563
Musaran
Cerveaulté
Posté le 07-02-2003 à 00:23:06  profilanswer
 

C'est normal, ++Taz et moi on est du même niveau... :lol:


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°305390
ced_voyage
Posté le 10-02-2003 à 13:18:49  profilanswer
 

pour tester si c'est un espace y'a une methode assez simple :
Dans le ctype.h
y'a la fonction isspace pour tester si c'est un espace ou non.
Par contre pour les autres fonctions isalpha, isdigit, ispunct, ... ca ne devrait pas t'aider pour tester une tab ou la touche entrée.
 
Cédric

n°305392
ced_voyage
Posté le 10-02-2003 à 13:21:02  profilanswer
 

ou alors passé par les codes ASCII 0x0D, etc. si çà marche tjs pas.

n°305498
Taz
bisounours-codeur
Posté le 10-02-2003 à 15:16:30  profilanswer
 

moi il me semble que isspace détecte aussi si c'est une tabulation.
 
et la touche entrée ne correspond à rien: il faut juste regarder si c'est '\n'. jamais le code ascii

n°305554
eraser17
Posté le 10-02-2003 à 16:09:20  profilanswer
 

ouai de toute facon c bon on va reprendre tout le projet de 0 pour mieux structurer ca donc ce prog on laisse tomber.  
 
par contre on va devoir faire un prog d'optimisation combinatoire par metaheuristique sur base du paradigme de la fourmillier. la on va peux etre avoir besoin d'aide pour certain bout de code  :D


Message édité par eraser17 le 10-02-2003 à 16:09:50

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  pour voir si un caract est un expace, tab ou enter

 

Sujets relatifs
Question con sur le traitement des chaines de caract...pb d'affichage de caract (flash)
[VB] Comment detecte le CTRL + ENTER dsune form sans le mettre partou?[java-script] validation enter
Executer une action quand on appui sur enter dans un edit en HTML[HTML] Soumettre une Form en pressant Enter...
Plus de sujets relatifs à : pour voir si un caract est un expace, tab ou enter


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)