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

  FORUM HardWare.fr
  Programmation
  C++

  [C] contrôle if dans une boucle ... ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] contrôle if dans une boucle ... ?

n°305190
freeman_78
Posté le 09-02-2003 à 23:56:35  profilanswer
 

Bonjour !  
J'aurais voulu savoir si en C on a le droit d'imbriquer une structure de contrôle du type if...else à l'intérieur d'un for.
 
Le but étant que ma condition doit être vérifiée de i=0 à n (c'est pour des tableaux...).
 
Merci d'avance !!

mood
Publicité
Posté le 09-02-2003 à 23:56:35  profilanswer
 

n°305191
eL_Shaman_​__
Plop.
Posté le 10-02-2003 à 00:00:13  profilanswer
 

Ben pourquoi pas?!

n°305198
clweb
je ne suis pas un numéro
Posté le 10-02-2003 à 00:51:47  profilanswer
 

Ben oui
 [:clweb]


---------------
@+ , Claude
n°305199
Angel_Doog​las
Le dernier des humains
Posté le 10-02-2003 à 00:52:25  profilanswer
 

:??:  
 
Qu'est ce que tu veux dire par imbriquer (je soupconne quelque chose de louche et interdit).
Tu peux evidemment mettre un if dans les instructions devant etre repetees.

n°305220
Cherrytree
cn=?
Posté le 10-02-2003 à 07:39:16  profilanswer
 

Oui tu peux si c'est une imbrication :
 

Code :
  1. if (i < 2) {
  2.     for (j = 0; j < 5; j++) {
  3.         ...
  4.     }
  5. }


 
L'inverse est vraie aussi.


---------------
Le site de ma maman
n°305222
freeman_78
Posté le 10-02-2003 à 07:44:22  profilanswer
 

ça oki, ais je voudrais un truc de la forme :

Code :
  1. if( for(...)) ...


 
Mais bon ça c'est pas faisable, alors est-ce que en mettant le if dans le for ça fait la même chose ?

n°305223
Cherrytree
cn=?
Posté le 10-02-2003 à 07:51:15  profilanswer
 

freeman_78 a écrit :

ça oki, ais je voudrais un truc de la forme :

Code :
  1. if( for(...)) ...


 
Mais bon ça c'est pas faisable, alors est-ce que en mettant le if dans le for ça fait la même chose ?

Ce genre d'imbrications n'est pas légal.


---------------
Le site de ma maman
n°305225
freeman_78
Posté le 10-02-2003 à 08:27:21  profilanswer
 

Ca d'accord j'avais vu que ça ne voulait pas se compiler :/
 
Mais comment pourais-je faire une structure équivalente et légale ... ?

n°305231
Cherrytree
cn=?
Posté le 10-02-2003 à 08:51:31  profilanswer
 

if interprète une séquence selon qu'elle est vraie ou fausse, auquel cas, if fait le branchement adéquat.
 
for itère bêtement sur le compteur de boucle.
 
Ni if, ni for ne retourne de valeurs. Il peut être utile de déclarer un booléen ou un entier suivant le cas, pour retenir un état du for utile pour le if et vice versa.
 
Il faut que tu dises ce que tu veux faire, car il y a de nombreuses manières de combiner les deux opérateurs. Sans plus de détails, je ne peux rien.


---------------
Le site de ma maman
n°305233
freeman_78
Posté le 10-02-2003 à 08:55:35  profilanswer
 

oki merci j'ai réussi à faire un truc :) :

Code :
  1. int testLignes(int n, double coefA[][10][10], double coefB[][10])
  2. {
  3. int j,i,compteur,retour;
  4. double coeffMultA,coeffMultB;
  5. retour = 1;
  6. compteur = 0;
  7. for(j=0 ; j<(n-1) ; j++)
  8. {
  9.  coeffMultB = coefB[j][0]/coefB[j+1][0];
  10.  for(i=0 ; i<n ; i++)
  11.  {
  12.   coeffMultA = coefA[i][j][0]/coefA[i][j+1][0];
  13.   if ( fabs(coeffMultA - coeffMultB) < 1.0e-50 )
  14.   {
  15.    compteur++;
  16.   }
  17.  }
  18.  if( compteur == n)
  19.  {
  20.   retour = 0;
  21.  }
  22.  compteur = 0;
  23. }
  24. return retour;
  25. }


 
Voilà donc ça teste après la fin de la boucle, du coup si la condition a été remplie à chaque itération, je peux retourner mon 0.

mood
Publicité
Posté le 10-02-2003 à 08:55:35  profilanswer
 

n°305253
taureau
Posté le 10-02-2003 à 09:50:23  profilanswer
 

j'ai pas trop regardé ton code mais il me semble plus judicieux de quitter directement lorsque le premier test if ( fabs(coeffMultA - coeffMultB) < 1.0e-50 ) sera faux non ? car de toute façon tu retourneras alors 1...mais bon c lundi et j'ai pas envie de chercher trop  :D

n°305264
freeman_78
Posté le 10-02-2003 à 10:02:41  profilanswer
 

le truc c'est que le test est censé être tout le temps faux ... si il est vrai, c'est qu'il y a une erreur et c'est pour ça que cette fonction existe... dans l'absolu ça fonctionne correctement, mais si vous avez plus élégant et/ou plus efficace, je veux bien !! je suis un tout petit newbi ...  :)

n°305273
taureau
Posté le 10-02-2003 à 10:18:53  profilanswer
 

oui alors là il vaut mieux tout tester c'est clair  :D  

n°306022
Musaran
Cerveaulté
Posté le 11-02-2003 à 03:38:05  profilanswer
 

Code :
  1. int testLignes(int n, double coefA[][10][10], double coefB[][10])
  2. {
  3. int i , j ;
  4. for(j=0 ; j<(n-1) ; j++)
  5. {
  6.  double coeffMultB = coefB[j][0]/coefB[j+1][0];
  7.  for(i=0 ; i<n ; i++)
  8.  {
  9.   double coeffMultA = coefA[i][j][0]/coefA[i][j+1][0];
  10.   if ( fabs(coeffMultA - coeffMultB) >= 1.0e-50 )
  11.    return 0; //faux et fin
  12.  }
  13. }
  14. return 1; //tout parcouru et vrai
  15. }


Il y a un return en plein milieu : c'est mal.
Le code est plus simple : c'est bien.


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

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

  [C] contrôle if dans une boucle ... ?

 

Sujets relatifs
en Win32, comment déterminer si un contrôle est "enabled" ou non ?comment on fait une boucle ?
[MySQL] controle de diffusion par: contrainte ou vue ???[PHP] Image PNG generé en boucle, ca ne marche pas
je voudrai que la boucle tourne jusqua ce que j apui sur une toucheProblemes avec une structure de controle
Pb de EOF dans boucle DoExemple OpenGL MSDN, boucle des msg
[ACCESS]déplacer un contrôle dans un formulaire.[VB]Contrôle OCX pour client ftp
Plus de sujets relatifs à : [C] contrôle if dans une boucle ... ?


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