Bonjour,
Pour un programme j'aurai besoin de faire :
Est ce qu'il existe une façon de faire ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part for(i=0;i<=1000;if(n=0){i=i+2;}else{i=i+4})
Merci.
Bonjour,
Pour un programme j'aurai besoin de faire :
Est ce qu'il existe une façon de faire ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part for(i=0;i<=1000;if(n=0){i=i+2;}else{i=i+4})
Merci.
Salut !
Pourquoi ne pas utiliser une boucle while ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int i=0; while(i<1001) { if (n==0) i+=2; else i+=4; }
Si tu tiens au for :
Code : Sélectionner tout - Visualiser dans une fenêtre à part for(i=0; i<=1000; i=i+2+2*(n!=0))
Site : http://chgi.developpez.com
Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)
En utilisant les ternaires
Les ternaires permettent de construire une condition if+else en une seule instruction
Code : Sélectionner tout - Visualiser dans une fenêtre à part for(i=0 ; i<=1000 ; (n==0) ? i+=2 : i+=4)
un exemple simple des ternaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part (age>=18) ? printf("majeur") : printf("mineur");
Ok, merci pour vos réponses, elles sont toutes très bien, par contre mon but est de faire le programme le plus rapide possible, d'après vous quelle est la solution la plus rapide ?
Merci.
Je dirais "aucune".
La boucle reste la même. Dans tous les cas, il y a un test ; il ne s'écrit juste pas de la même manière. Celle de CGi est peut-être un poil plus lente : il y a une multiplication.
La seule façon de vérifier est de comparer l'assembleur généré.
Question bête d'ou viens le n?
A priori, s'il ne change pas dans la boucle autant le sortir du calcul avec une solution du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int step = ( n == 0 ? 2 : 4); int i = 0; while ( i < 1001) { i += step; }
L'idée pour être plus précis est de faire des calculs sur les nombres premiers, sachant que les nombres premiers finissent toujours pas 1,3,7 ou 9 je voulais faire des sauts de valeurs différentes pour éviter de faire des calculs sur des nombres dont on sait qu'ils ne sont pas premiers,
donc les saut dans la boucle sont +2, +4, +2, +2.
ça permet d'éviter des milliards de calculs quand on arrive à des nombres de plusieurs milliards.
Quand je fais ça j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for(f=11 ; f<=1000 ; (g==2) ? f+=4 : f+=2) {...}
lvalue required as left operande of assignment
Mets des parenthèses :
Code : Sélectionner tout - Visualiser dans une fenêtre à part for(f=11 ; f<=1000 ; (g==2) ? (f+=4) : (f+=2))
Site : http://chgi.developpez.com
Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)
Ok merci à tous, j'ai réussi à faire ce que je voulais.
Partager