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

  FORUM HardWare.fr
  Programmation
  C++

  [ C ] Structure de if correct ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ C ] Structure de if correct ?

n°283640
tabasc0
Posté le 10-01-2003 à 16:09:21  profilanswer
 

Est ce que cette structure est correcte pke mon prog a l air de prendre en compte que la derniere instruction apres le else, c est a dire qu il retourne toujours 4 comme valeurs quelque soit les valeurs de a , b, c.
Je suis desolé je ne suis qu un debutant, si vous pouviez me filer un coup de main ca serait sympa.
Merci par avance  :hello:  
(j espere que c pas trop moche l affichage du code)
 
 

Code :
  1. static double racineR1, racineR2, racineI1, racineI2, racineC1, racineC2, racineRDouble;
  2. static char valRetour;
  3. //definition de la fonction
  4. char calculDeux (double a , double b , double c )
  5. {
  6. double D;
  7. D=b*b-4*a*c;
  8. if(a==0)
  9. {
  10.  return -1;
  11.  //valRetour=-1;
  12.  printf("equation du premier degré\n" );
  13. }
  14. else
  15. {
  16.  if(D>0)
  17.  {
  18.   return 2;
  19.   //valRetour=2;
  20.   racineR1=(-b-sqrt(D))/(2*a);
  21.   racineR2=(-b+sqrt(D))/(2*a);
  22.  }
  23.  else
  24.  {
  25.   if(D==0)
  26.   {
  27.    return 3;
  28.    //valRetour=3;
  29.    racineRDouble=-b/2*a;
  30.   }
  31.   else
  32.   {
  33.    /*if(D<0 && b==0)
  34.    {*/
  35.     return 4;
  36.     //valRetour=4;
  37.     racineI1=-sqrt(D)/2*a;//ne pas oublier le i a l affichage
  38.     racineI2=sqrt(D)/2*a;//ne pas oublier le i a l affichage
  39.    }
  40.    /*else  
  41.    {
  42.     return 6;
  43.     //valRetour=6;
  44.     racineC1=racineRDouble+racineI1;
  45.     racineC2=racineRDouble+racineI2;
  46.    }*/
  47.   //}
  48.  }
  49. }
  50. }

mood
Publicité
Posté le 10-01-2003 à 16:09:21  profilanswer
 

n°283644
Taz
bisounours-codeur
Posté le 10-01-2003 à 16:20:14  profilanswer
 

à partir du moment ou tu fais un return, ta fonction retourne à l'appelant. donc toutes les instructions apres un return ne seront pas exécutés

n°283650
tabasc0
Posté le 10-01-2003 à 16:23:10  profilanswer
 

Ha bhe deja ca va m aider ca!!
Merci bocoup bocoup  :jap:

n°283657
tabasc0
Posté le 10-01-2003 à 16:26:19  profilanswer
 

quoique attend....
De toute facon si les instructions du if ne sont pas verifiés b1 il tient pas en compte le return qui est dedans donc il continue juska ce qui est une condition verifié...
Normalement ca devrait etre bon alors, moi g besoin qu il retourne qu une valeur de toute facon.

n°283659
Taz
bisounours-codeur
Posté le 10-01-2003 à 16:27:25  profilanswer
 

je comprends bien: mais ne retourne une valeur qu'une fois que ton traitement est complet


Message édité par Taz le 10-01-2003 à 16:30:07
n°283670
tabasc0
Posté le 10-01-2003 à 16:34:27  profilanswer
 

Bon ok je vais revoir ca de toute facon ca va pas tres bien, je crois que je vais tous refaire.
Merci qd même pour ton aide  :jap:

n°283683
avander
Posté le 10-01-2003 à 16:49:38  profilanswer
 

Salut,  
 
Un petit tuyau! Pour désactiver du code il vaut mieux utiliser #if 0, comme dans:
 

Code :
  1. void
  2.    example()
  3.    {
  4.       great looking code
  5. #if 0
  6.       lots of code
  7. #endif
  8.       more code
  9.     }


 
Si tu le fait avec des // ou des /* */ alors 9 fois sur 10 on perd les pédales...  
 
Bonne continuation. Avander


---------------
A thing of beauty is a joy forever (John Keats)
n°283794
mrbebert
Posté le 10-01-2003 à 19:40:42  profilanswer
 

Je sais pa si c'est ca, mais le "if (a == 0)" avec a qui n'est pas un entier, ca risque pas de poser problème :??:

n°283795
Taz
bisounours-codeur
Posté le 10-01-2003 à 19:43:40  profilanswer
 

il vaut mieux effectivement 0.0 pour les doubles et 0.0f pour les float. (rappel: les types flottants sont un représentationb plus ou moins precise des nombrres réels, donc attention)

n°283978
Musaran
Cerveaulté
Posté le 11-01-2003 à 04:44:41  profilanswer
 

Le test d'égalité marche mal avec les flottants. Cela s'applique à:

Code :
  1. if(D==0) ...
  2. if(fabs(D-0) < tolerance) ... //remplacement


Si tu fais des return, inutile de s'encombrer avec les else.

Code :
  1. char calculDeux (double a , double b , double c )
  2. {
  3. double D= b*b - 4*a*c;
  4. if(a==0)
  5. {
  6.  printf("equation du premier degré\n" );
  7.  return -1;
  8. }
  9. if(D>0 )
  10. {
  11.  racineR1=(-b-sqrt(D))/(2*a);
  12.  racineR2=(-b+sqrt(D))/(2*a);
  13.  return  2;
  14. }
  15. if(D==0)
  16. {
  17.  racineRDouble= -b/2*a;
  18.  return  3;
  19. }
  20. /*D<0*/
  21. racineI1= -sqrt(D)/2*a;
  22. racineI2=sqrt(D)/2*a;
  23. return  4;
  24. }


Ou même, en alignant:

Code :
  1. char calculDeux (double a , double b , double c )
  2. {
  3. double D= b*b - 4*a*c;
  4. if(a==0){ printf("equation du premier degré\n" );                    return -1; }
  5. if(D>0 ){ racineR1=(-b-sqrt(D))/(2*a); racineR2=(-b+sqrt(D))/(2*a); return  2; }
  6. if(D==0){               racineRDouble= -b/2*a;                      return  3; }
  7. /*D<0*/   racineI1= -sqrt(D)/2*a     ; racineI2=sqrt(D)/2*a       ; return  4;
  8. }


Il te reste à apprendre à ne pas utiliser de variables globales, à utiliser une énumération, une structure...


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

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

  [ C ] Structure de if correct ?

 

Sujets relatifs
eregistrer une structure en C++[C] fonction et retour de structure | tomik recentré sur le rand()
pb de taille de structurestructure d'une base de donnés sql pour un forum et fonctions innovant
[C] probleme de structurestructure de donnee
Peut-on initialiser les champs d'une structure?recherche des informations sur la structure physique des fichiers TIFs
Probleme avec la structure FILE[C++] Ya moyen de sauvegarder d'un seul coup une structure ds un .INI?
Plus de sujets relatifs à : [ C ] Structure de if correct ?


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