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

  FORUM HardWare.fr
  Programmation
  C++

  détection d'un char

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

détection d'un char

n°770563
grosbin
OR die;
Posté le 20-06-2004 à 22:59:00  profilanswer
 

Voilà j'aimerais connaître l'instruction qui reconnait des char.
 
Pour simple exemple, je fais des programmes de calculs mathématiques et l'entrée d'un caractère non décimal le fait tourner en boucle.
 
Je remercie celui qui a la connaissance nécessaire pour pouvoir remedier à mon problème.

mood
Publicité
Posté le 20-06-2004 à 22:59:00  profilanswer
 

n°770564
blackgodde​ss
vive le troll !
Posté le 20-06-2004 à 23:00:37  profilanswer
 

c un char :
 
if (c < '0' || c > '9')
{
c'est pas un chiffre
}
else
{
c'est un chiffre
}


Message édité par blackgoddess le 20-06-2004 à 23:01:02

---------------
-( BlackGoddess )-
n°770590
grosbin
OR die;
Posté le 20-06-2004 à 23:27:11  profilanswer
 

Je ne sais pas tellement  :heink:  

Code :
  1. #include <iostream.h>
  2. #include <math.h>
  3. #include <conio.h>
  4. double Testchar (char y)
  5. {
  6.     if (y<'0' || y>'9')
  7.     {
  8.     return (0);
  9.     }
  10.     else
  11.     {
  12.     return (y);
  13.     }
  14. }
  15. double Trigo (double y) /* conversion de radians en degrés */
  16. {
  17.     const double pi=3.1415592654;
  18.     return ((360*y)/(2*pi));
  19. }
  20. double Fonction (double y)
  21. {
  22.     const double pi=3.1415592654;
  23. return (Trigo(atan(y))+Trigo(atan(y+1))+Trigo(atan(y-1))-(pi/2));
  24. }
  25. void main ()
  26. {
  27. double a=-1,b=-1,m,f,prec=2,y,qi=103,confirm=0;
  28.     int pause=-1;
  29.     cout<<"ce programme calcule le 0 d'une fonction par dichotomie"<<endl<<
  30.     "y=atan(y)+atan(y+1)+atan(y-1)-(3.14/2)"<<endl<<endl
  31.     <<"ne rentrez pas de caracteres cela pourrait avoir des effets byzares"<<endl
  32.     <<endl<<"veuillez rentrer les bornes de la fonction :"<<endl;
  33.     for (a;a<0;qi--)
  34.     {
  35.     cout<<"intervalle de depart ( >0 ):"<<endl<<"'convertie automatiquement en negatif'"<<endl;
  36. cin>>y;
  37.     a=Testchar(-y);
  38.     }
  39.     for (b;b<0;qi--)
  40.     {
  41. cout<<"intervalle de fin ( >0 ):"<<endl;
  42. cin>>y;
  43.     b=Testchar(y);
  44.     }
  45.     for (prec;prec>1 && prec!=0;qi--)
  46. {
  47.     cout<<"precision : veuillez taper 0.xxxxx"<<endl;
  48.     cin>>y;
  49.     prec=Testchar(y);
  50.     }
  51. do
  52. {
  53.  m=(b+a)/2.0;
  54.  f=(Fonction(m))*(Fonction(a));
  55.  if (f<0)
  56.  {
  57.   b=m;
  58.  }
  59.  else if (f==0)
  60.  {
  61.   a=b=m;
  62.   break;
  63.  }
  64.  else
  65.  {
  66.   a=m;
  67.  }
  68. }
  69. while ((sqrt((b-a)*(b-a)))>prec);
  70. cout<<endl<<"l'intervalle ou est compris l'ordonee de 0 est de :"<<endl<<
  71.     "a:"<<a<<endl<<"b:"<<b<<endl;
  72.     do
  73.     {
  74.         cout<<"ton QI est de :"<<qi<<endl;
  75.         cout<<"pressez une touche puis entree pour sortir du programme"<<endl;
  76.         cin>>y;
  77.         pause=Testchar(y);
  78.         qi--;
  79.     }
  80.     while (pause!=-1);
  81. }

n°770594
Taz
bisounours-codeur
Posté le 20-06-2004 à 23:29:53  profilanswer
 

c'est n'importe quoi  
 
<cctype>
 
isidigit( c )

n°770598
grosbin
OR die;
Posté le 20-06-2004 à 23:31:13  profilanswer
 

Peux tu développer s'il te plait pour un pauvre étudiant qui a un partiel de prog demain ?
 
J'ai refait les tests logiques...


Message édité par grosbin le 20-06-2004 à 23:33:09
n°770619
Taz
bisounours-codeur
Posté le 20-06-2004 à 23:46:12  profilanswer
 

isdigit est une fonction standard qui te dis si oui ou nom c est un chiffre
 
http://www.cs.bsu.edu/homepages/pe [...] cctype.htm

n°770622
Taz
bisounours-codeur
Posté le 20-06-2004 à 23:47:31  profilanswer
 

et ta constante pi tu ferais bien de la définir une fois pour tout je pense
 
et si tu veux un peu optimisé, soupoudre d'inline

n°770624
grosbin
OR die;
Posté le 20-06-2004 à 23:49:56  profilanswer
 

Excuses-moi mais je ne connais pas tout cela...
 
Aurais-tu de bons tutos ?

n°770627
Taz
bisounours-codeur
Posté le 20-06-2004 à 23:56:52  profilanswer
 

les tutos ne servent à rien. la documentation si.
 
Tu t'es jamais dit que si cout et cin était partout, c'est qu'ils devaient bien faire partie d'une bibliothèque standard ? documente toi, fouille la bibliothèque standard / STL

n°770632
grosbin
OR die;
Posté le 21-06-2004 à 00:08:23  profilanswer
 

D'accord c'est un boléen,
ensuite il me met un "parse error après ')'"

Code :
  1. double Testchar (double y)
  2. {
  3.     int is=0;
  4.     is=isdigit(int y);
  5.     if (is==1)
  6.     {
  7.     return (y);
  8.     }
  9.     else
  10.     {
  11.     return (0);
  12.     }
  13. }


je vois pas tellement, je suis novice.

mood
Publicité
Posté le 21-06-2004 à 00:08:23  profilanswer
 

n°770634
Ace17
Posté le 21-06-2004 à 00:09:50  profilanswer
 

"je suis novice" .................. effectivement.
 
Que vient faire le "int" dans les parentheses?


Message édité par Ace17 le 21-06-2004 à 00:10:14
n°770636
Taz
bisounours-codeur
Posté le 21-06-2004 à 00:11:47  profilanswer
 

question con : à quoi te sert ta variable is ?

n°770637
grosbin
OR die;
Posté le 21-06-2004 à 00:12:26  profilanswer
 

j'ai tenté de décomposer pour voir si ça venait de ça

n°770640
Ace17
Posté le 21-06-2004 à 00:15:03  profilanswer
 

"if (is==1)" c'est plutot risqué... Tu sais que si c'est un chiffre, il te renvoie pas 0. Mais de la a dire que c'est 1...
Tu devrais plutot faire "if (is!=0)", voire meme, "if(!isdigit(y))"

n°770644
Taz
bisounours-codeur
Posté le 21-06-2004 à 00:17:39  profilanswer
 

ou carrément sans négation, juste inversé les tests ...

n°770646
grosbin
OR die;
Posté le 21-06-2004 à 00:17:53  profilanswer
 

6 dichotomie.cpp
 implicit declaration of function `int isdigit(...)'
 
 :??:  
j'ai importé <string.h>
selon l'adresse de taz http://www.cs.bsu.edu/homepages/pe [...] tm#isdigit

n°770651
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 21-06-2004 à 00:20:47  profilanswer
 

pour isdigit, faut inclure <ctype.h> :o


---------------
J'ai un string dans l'array (Paris Hilton)
n°770653
Taz
bisounours-codeur
Posté le 21-06-2004 à 00:21:16  profilanswer
 

Harkonnen a écrit :

pour isdigit, faut inclure <ctype.h> :o

ta gueule c'est <cctype>

n°770654
Taz
bisounours-codeur
Posté le 21-06-2004 à 00:21:40  profilanswer
 

grosbin a écrit :

6 dichotomie.cpp
 implicit declaration of function `int isdigit(...)'
 
 :??:  
j'ai importé <string.h>
selon l'adresse de taz http://www.cs.bsu.edu/homepages/pe [...] tm#isdigit

mais c'est que t'es doué en plus    [:tomtom75]

n°770656
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 21-06-2004 à 00:22:01  profilanswer
 

Taz a écrit :

ta gueule c'est <cctype>

ah oui, merde, c'est du C++ [:ddr555]
[:neowen]


---------------
J'ai un string dans l'array (Paris Hilton)
n°770657
grosbin
OR die;
Posté le 21-06-2004 à 00:22:25  profilanswer
 

MOUARF  :pt1cable:

n°770658
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 21-06-2004 à 00:23:07  profilanswer
 

Taz a écrit :

mais c'est que t'es doué en plus    [:tomtom75]


putain, j'avais même pas regardé le lien en plus, c'est marqué dessus, doué le gars  [:xp1700]


---------------
J'ai un string dans l'array (Paris Hilton)
n°770662
grosbin
OR die;
Posté le 21-06-2004 à 00:26:24  profilanswer
 

3 dichotomie.cpp
 cctype.h: No such file or directory
--> ctype ça marche
 
enfin j'ai pas encore compris pour le booléen

n°770663
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 21-06-2004 à 00:27:39  profilanswer
 

grosbin a écrit :

3 dichotomie.cpp
 cctype.h: No such file or directory
--> ctype ça marche
 
enfin j'ai pas encore compris pour le booléen


ou t'as vu <cctype.h> :o
y'a marqué <cctype>


---------------
J'ai un string dans l'array (Paris Hilton)
n°770665
grosbin
OR die;
Posté le 21-06-2004 à 00:29:01  profilanswer
 

n'empêche qu'au premier char il se barre en boucle  :pfff:

n°770682
el muchach​o
Comfortably Numb
Posté le 21-06-2004 à 00:48:51  profilanswer
 

Ton programme est imbitable :
 - definit pi une fois pour toutes en debut de programme,
 
 - les nombres decimaux doivent etre ecrits avec des .,  et meme avec une partie decimale, c'est plus propre
 
 - une fonction Testchar qui prend un char en entier et qui le ressort en double, tu trouves pas ca bizarre ? Moi si.
 
 - remplece tes boucles for par des while ou des do ... while, ta solution est moche et on n'y comprend rien.
 
 - sqrt((b-a)*(b-a)) peut etre avantageusement remplace par abs(b-a)
 
 - simplifie ton programme en virant le superflu, i. e. les conneries sur le QI et le test des caracteres.


Message édité par el muchacho le 21-06-2004 à 00:58:24
n°770693
grosbin
OR die;
Posté le 21-06-2004 à 01:07:09  profilanswer
 

remplacé les for par do...while
const double PI ...
je rentre un char lors du premier cin,
et mis a,b,c et la fonction Testchar en int
j'arrive à un affichage en boucle du cout "precision"
-> d'ailleurs il aime pas bien les char.
 
c'est relativement nouveau pour moi tout cela, alors je vous en prie continuez à m'aider  :jap:


Message édité par grosbin le 21-06-2004 à 01:10:12
n°770702
el muchach​o
Comfortably Numb
Posté le 21-06-2004 à 01:16:41  profilanswer
 

Balance le code. Et indente-le avec des espaces de sorte que ce soit lisible, STP.

n°770760
red factio​n
Posté le 21-06-2004 à 02:52:04  profilanswer
 

grosbin a écrit :

remplacé les for par  
const double PI ...


 
en fait le mieux c que tu fasse un #define
 
dans ton prog par exemple tu fait  
#define PI 3.141559
 
et apres tu peut utiliser PI librement  
- je l'ai mit en majuscule car c une convention pour tout les define :o
- pas de ; apres le define car lors de la compilation les PI seront remplace par leur valeur correspondante :o
puis c pas une instruction aussi :o


Message édité par red faction le 21-06-2004 à 02:52:39
n°770776
Ace17
Posté le 21-06-2004 à 07:47:02  profilanswer
 

Non mais son probleme c'est pas qu'il a un code pourri, c'est que si au moment ou il fait cin >> un_nombre l'utilisateur rentre une chaine de caracteres, ca court-circuite tous les cin suivants...

n°770798
grosbin
OR die;
Posté le 21-06-2004 à 08:16:19  profilanswer
 

merci Ace, tu as saisi le problème  :jap:

n°770799
Taz
bisounours-codeur
Posté le 21-06-2004 à 08:16:57  profilanswer
 

bah tu te penche sur la fonction recherche, j'ai donné 100x un programme d'exemple sur comment bien lire un entier

n°771256
grosbin
OR die;
Posté le 21-06-2004 à 12:34:50  profilanswer
 

je te supplie de me mettre sur la bonne piste taz, après je me tais

n°771267
xterminhat​e
Si vis pacem, para bellum.
Posté le 21-06-2004 à 12:48:55  profilanswer
 

red faction a écrit :

en fait le mieux c que tu fasse un #define
 
dans ton prog par exemple tu fait  
#define PI 3.141559
 
et apres tu peut utiliser PI librement  
- je l'ai mit en majuscule car c une convention pour tout les define :o
- pas de ; apres le define car lors de la compilation les PI seront remplace par leur valeur correspondante :o
puis c pas une instruction aussi :o


 
En C++, le const est plus jolie. Le define ca fait plutot 'C'.


---------------
Cordialement, Xterm-in'Hate...
n°771270
kadreg
profil: Utilisateur
Posté le 21-06-2004 à 12:52:15  profilanswer
 

[:cupralf]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°771277
grosbin
OR die;
Posté le 21-06-2004 à 12:54:12  profilanswer
 

s'il vous plait !!!

n°771827
Ace17
Posté le 21-06-2004 à 18:51:56  profilanswer
 

moi je veux bien t'aider mais soit je te file une solution a moi et Taz va se pointer pour la détruire, sans pour autant donner celle qu'il estime etre la bonne, soit je retrouve le post auquel Taz fait référence ... mais apres recherche je trouve pas.....

n°771843
Ace17
Posté le 21-06-2004 à 18:58:14  profilanswer
 

Apres une recherche plus appronfondie... j'ai trouvé ca :

Code :
  1. #include <sstream>
  2. #include <string>
  3.                                                                                                  
  4. using namespace std;
  5.                                                                                                  
  6. int main()
  7. {
  8.                                                                                                      
  9. int i;  
  10. for( ; ; )
  11. {
  12.   cout << "1) saisissez un entier : " << flush;
  13.   if( cin >> i )
  14.  {
  15.     break;
  16.  }
  17.   else if(cin.bad())
  18.  {
  19.     cerr << "Erreur d\'E/S" << endl;
  20.     return 1;
  21.  }
  22.   else if (cin.eof())
  23.  {
  24.     cout << endl << "EOF, Bye" << endl;
  25.     return 0;
  26.  }
  27.   else
  28.  {
  29.     cin.clear();
  30.     cin.ignore(numeric_limits<int>::max(), '\n');
  31.  }
  32. }
  33. cout << "1) voila l'entier : " << i << endl;


 
Provenance : Topic


Message édité par Ace17 le 22-06-2004 à 09:48:07
n°772252
grosbin
OR die;
Posté le 22-06-2004 à 02:17:34  profilanswer
 

1 d2.cpp
 sstream: No such file or directory
 :sweat:  
 
( j'utilise dev c++ 4 )

n°772272
Taz
bisounours-codeur
Posté le 22-06-2004 à 07:31:29  profilanswer
 

c'est que tu compile en C:o

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  détection d'un char

 

Sujets relatifs
Détection d'allocations mémoireDetection hardware et Aquisition Audio en C++
transformer un char* en intDetection d'une expression numerique dans une chaine
Convertir QString en charefacer les caractere d'un tableau de char
équivalence char [] stringConversion CString en char* ?
problem conversion char* -> string sous visual .netconvertir un double ou un float en string ou en char
Plus de sujets relatifs à : détection d'un char


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR