Comment faites vous pour boucler sur toutes les valeurs d'un
intervalle, sachant que les bornes peuvent etre la valeur extreme du
type et que l'intervalle peut etre vide. Avec int,
for (int i = d; i <= f; ++i) {
...
}
ne fonctionne pas car f peut etre INT_MAX (et d peut etre INT_MIN).
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
On 10 Oct 2003 10:20:01 +0200, Jean-Marc Bourguet wrote:
for (int i = d; i <= f; ++i) { ... }
ne fonctionne pas car f peut etre INT_MAX (et d peut etre INT_MIN).
if (boucle_pas_vide) for (int i=d; i<=f; ++i) { ... if (i==f) break; }
Le test dans for est redondant. Sinon c'est bien ce que j'emploie mais je me demandais si quelqu'un avait mieux.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ <gramster@gramster.com> writes:
On 10 Oct 2003 10:20:01 +0200, Jean-Marc Bourguet <jm@bourguet.org>
wrote:
for (int i = d; i <= f; ++i) {
...
}
ne fonctionne pas car f peut etre INT_MAX (et d peut etre INT_MIN).
if (boucle_pas_vide)
for (int i=d; i<=f; ++i)
{
...
if (i==f) break;
}
Le test dans for est redondant. Sinon c'est bien ce que j'emploie
mais je me demandais si quelqu'un avait mieux.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
On 10 Oct 2003 10:20:01 +0200, Jean-Marc Bourguet wrote:
for (int i = d; i <= f; ++i) { ... }
ne fonctionne pas car f peut etre INT_MAX (et d peut etre INT_MIN).
if (boucle_pas_vide) for (int i=d; i<=f; ++i) { ... if (i==f) break; }
Le test dans for est redondant. Sinon c'est bien ce que j'emploie mais je me demandais si quelqu'un avait mieux.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Vincent Lascaux
if (boucle_pas_vide) for (int i=d; i<=f; ++i) { ... if (i==f) break; }
Le test dans for est redondant. Sinon c'est bien ce que j'emploie mais je me demandais si quelqu'un avait mieux.
Comme ca il y a plus de test redondant, mais c'est pas très beau (on sait pas jusqu'où va la boucle à premiere lecture) si on ne fait pas une macro (si c'est très utilisé)
if (boucle_pas_vide)
for (int i=d; i<=f; ++i)
{
...
if (i==f) break;
}
Le test dans for est redondant. Sinon c'est bien ce que j'emploie
mais je me demandais si quelqu'un avait mieux.
Comme ca il y a plus de test redondant, mais c'est pas très beau (on sait
pas jusqu'où va la boucle à premiere lecture) si on ne fait pas une macro
(si c'est très utilisé)
Comme ca il y a plus de test redondant, mais c'est pas très beau (on sait pas jusqu'où va la boucle à premiere lecture) si on ne fait pas une macro (si c'est très utilisé)
Fred
"Fabien LE LEZ" a écrit dans le message de news:
On 10 Oct 2003 10:20:01 +0200, Jean-Marc Bourguet wrote:
for (int i = d; i <= f; ++i) { ... }
ne fonctionne pas car f peut etre INT_MAX (et d peut etre INT_MIN).
if (boucle_pas_vide) for (int i=d; i<=f; ++i) { ... if (i==f) break; }
for (int i = d; i < f; ++i) { traitement(i); } traitement(f);
avec inline void traitement(int i); ca devrait etre pas trop mal
Fred
"Fabien LE LEZ" <gramster@gramster.com> a écrit dans le message de
news:0arcovgh4vahsti7834j4ksseh0j5sn2s9@4ax.com...
On 10 Oct 2003 10:20:01 +0200, Jean-Marc Bourguet <jm@bourguet.org>
wrote:
for (int i = d; i <= f; ++i) {
...
}
ne fonctionne pas car f peut etre INT_MAX (et d peut etre INT_MIN).
if (boucle_pas_vide)
for (int i=d; i<=f; ++i)
{
...
if (i==f) break;
}
for (int i = d; i < f; ++i) {
traitement(i);
}
traitement(f);
avec inline void traitement(int i); ca devrait etre pas trop mal
for (int i = d; i < f; ++i) { traitement(i); } traitement(f);
avec inline void traitement(int i); ca devrait etre pas trop mal
A condition que f>=d, non ?
Et à condition que f>0
Pourquoi f>0 ? J'ai du mal.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Fabien SK
Marc Boyer wrote:
Fabien SK wrote:
for (int i = d; i < f; ++i) { traitement(i); } traitement(f);
avec inline void traitement(int i); ca devrait etre pas trop mal
A condition que f>=d, non ?
Et à condition que f>0
Pourquoi f>0 ? J'ai du mal.
"f" est la borne supérieure. Si tu veux boucler sur un ensemble vide (borne supérieur est égale a zéro), ça ne marche pas à cause du "traitement(f);" à l'extérieur de la boucle. On appelle "traitement" une fois alors qu'on ne doit jamais l'appeler.
Marc Boyer wrote:
Fabien SK wrote:
for (int i = d; i < f; ++i) {
traitement(i);
}
traitement(f);
avec inline void traitement(int i); ca devrait etre pas trop mal
A condition que f>=d, non ?
Et à condition que f>0
Pourquoi f>0 ? J'ai du mal.
"f" est la borne supérieure. Si tu veux boucler sur un ensemble vide
(borne supérieur est égale a zéro), ça ne marche pas à cause du
"traitement(f);" à l'extérieur de la boucle. On appelle "traitement" une
fois alors qu'on ne doit jamais l'appeler.
for (int i = d; i < f; ++i) { traitement(i); } traitement(f);
avec inline void traitement(int i); ca devrait etre pas trop mal
A condition que f>=d, non ?
Et à condition que f>0
Pourquoi f>0 ? J'ai du mal.
"f" est la borne supérieure. Si tu veux boucler sur un ensemble vide (borne supérieur est égale a zéro), ça ne marche pas à cause du "traitement(f);" à l'extérieur de la boucle. On appelle "traitement" une fois alors qu'on ne doit jamais l'appeler.
Fabien SK
Marc Boyer wrote:
Pourquoi f>0 ? J'ai du mal.
au temps pour moi, je n'ai rien dit. Tu avais raison en disant "A condition que f>=d".
Marc Boyer wrote:
Pourquoi f>0 ? J'ai du mal.
au temps pour moi, je n'ai rien dit. Tu avais raison en disant "A
condition que f>=d".