Affectation ou test ? Quel est le mieux ? [C/C++] - C++ - Programmation
Marsh Posté le 03-06-2003 à 13:52:59
de toute façon, toto ne doit être affecté que si au moins une valeur de ton tableau == 6, donc pas besoin de tester tout le tableau :
Code :
|
edit: parenthèses
Marsh Posté le 03-06-2003 à 13:55:00
Harkonnen a écrit : de toute façon, toto ne doit être affecté que si au moins une valeur de ton tableau == 6, donc pas besoin de tester tout le tableau :
|
c'est moyen non, tu testes toto sans l'initialiser...et à chaque tour de boucle!
Il suffit de rajouter un break dans son if, non?
[edit]
Grillaid par chrisbk...mais moi j'ai esspliké
Marsh Posté le 03-06-2003 à 13:55:37
chrisbk a écrit : perso j'aurais fait un break |
Argh, pas beau le break, si ton for ressemble à un while, met un while.
Marsh Posté le 03-06-2003 à 13:56:12
C'est vrai que pas besoin de tester tout le tableau dans ce cas, mais pour mon affaire c'est pas 6 mais c'est 1 2 3 4 5 6, donc je peux pas y couper?
Marsh Posté le 03-06-2003 à 13:56:15
skeye a écrit : |
oui, toto doit bien évidemment être initialisé, oubli de ma part.
je suis pas fan des break, ça a tendance à faire du code spaghetti.
Marsh Posté le 03-06-2003 à 13:56:29
int i=0;
while (i<50)
{
if (tab[i++] == 6)
{
toto = 6;
break; // ou i=50;
}
}
EDIT : le break fonctionne aussi avec une boucle for comme celle que t'avais au depart
Marsh Posté le 03-06-2003 à 13:56:41
LetoII a écrit : |
pas du tout, je trouve ca elegant, et dans son cas c plutot son while qui ressemble a un for que l'inverse
le break est injustement diabolisé
Marsh Posté le 03-06-2003 à 13:56:44
LetoII a écrit : |
Marsh Posté le 03-06-2003 à 13:57:15
polo021 a écrit : int i=0; |
c moche et c'est nul, tu sors
Marsh Posté le 03-06-2003 à 13:58:00
polo021 a écrit : int i=0; |
bouh j'aime pas le tab[i++]...je trouve pas ca lisible, même si ca n'engage que moi!
Marsh Posté le 03-06-2003 à 13:58:32
sorry, mais en terme de perfs, mon code est plus efficace ! je n'écrit qu'une seule fois dans la RAM !
edit: en dehors de l'incrémentation de i bien entendu
Marsh Posté le 03-06-2003 à 13:59:42
skeye a écrit : |
Moi j'ai une préférence pour:
Code :
|
Après comme on sait pas ce qu'il veut en faire...
Marsh Posté le 03-06-2003 à 13:59:55
Harkonnen a écrit : sorry, mais en terme de perfs, mon code est plus efficace ! je n'écrit qu'une seule fois dans la RAM ! |
Plus efficace que...?
En reprenant son code + un break on n'écrit qu'une fois aussi, non?
Marsh Posté le 03-06-2003 à 14:00:03
chrisbk a écrit : |
je suis bien d'accord c'est le cas typique où un for+break est très pratique.
Marsh Posté le 03-06-2003 à 14:00:06
Harkonnen a écrit : sorry, mais en terme de perfs, mon code est plus efficace ! je n'écrit qu'une seule fois dans la RAM ! |
pas aussi efficace qu'un break, tu fais une incrementation et deux tests en plus
et tn plus ta condition est fausse
Code :
|
nul, zero, tu sors
Code :
|
c deja mieux
Code :
|
la c encore mieux
Marsh Posté le 03-06-2003 à 14:01:24
skeye a écrit : |
plus efficace que celui d'ant. j'avais posté sans voir le code de polo
Marsh Posté le 03-06-2003 à 14:01:42
LetoII a écrit :
|
Tu fais tjrs des comparaisons inutiles, à mon sens...
Marsh Posté le 03-06-2003 à 14:03:34
chrisbk a écrit : et tn plus ta condition est fausse |
ben non ! tu sors de la boucle si :
- tu as parcouru tout le tableau sans qu'aucun de ses membres ne soit égal à 6 (i < 50)
- un de ses membres est égal à 6
ta condition implique que le tableau contient forcément une valeur 6, ce qui ne sera pas forcément le cas
Marsh Posté le 03-06-2003 à 14:03:56
LetoII a écrit :
|
nan paske si y a pas de 6 dans le tableau on aura une mauvaise valeur dans toto et tu affcete a chaque fois
Marsh Posté le 03-06-2003 à 14:04:16
Harkonnen a écrit : |
le while pour les nuls s'impose
la tu va tjs parcourir ton tableau en integralite
Marsh Posté le 03-06-2003 à 14:05:29
skeye a écrit : |
Ben non.
Marsh Posté le 03-06-2003 à 14:05:39
Harkonnen a écrit : |
ca:
Code :
|
Si ya pas de 6 dans le tableau tu sors jamais...
Marsh Posté le 03-06-2003 à 14:05:59
chrisbk a écrit : |
ouais
harko > meme si tu as un 6 dans le tableau, avec ton || on ne sortira que si i vaut 50. meme moi je sais ca
Marsh Posté le 03-06-2003 à 14:07:00
LetoII a écrit : |
Tu affectes toto à chaque tour, et à chaque fois tu le compares à 6...alors que ce n'est pas nécéssaire de remplir toto sans y mettre 6, auquel cas tu sais qu'il faut sortir quoi qu'il arrive!
Marsh Posté le 03-06-2003 à 14:07:46
polo021 a écrit : |
Dans son code toto à pas de valeur avant la boucle donc on s'en fout. Et les affectations par raport aux tests c rapide.
Marsh Posté le 03-06-2003 à 14:08:52
autant pour moi pour le while
Marsh Posté le 03-06-2003 à 14:08:56
skeye a écrit : |
Ben ouia, mais je fais pas de comparaison inutile, des affectations ça se discute mais les omparaisons c bon
Marsh Posté le 03-06-2003 à 14:09:09
skeye a écrit :
|
ouais et tu vas lire n'importe ou dans ta memoire. Ben c'est du propre harko! toi qui dit toujours qu'il faut faire gaffe avec les acces memoire en C
Marsh Posté le 03-06-2003 à 14:09:22
franchement, hein :
Code :
|
et basta
Marsh Posté le 03-06-2003 à 14:10:27
LetoII a écrit : |
J'ai rien dit, parlé trop vite!
Marsh Posté le 03-06-2003 à 14:11:10
chrisbk a écrit : franchement, hein :
|
+1
Marsh Posté le 03-06-2003 à 14:11:25
polo021 a écrit : |
je viens de me farcir une semaine de Pascal à l'insu de mon plein gré, forcément j'ai pas les idées très claires, et le rhume des foins ça aide pas
Marsh Posté le 03-06-2003 à 14:12:20
Harkonnen a écrit : |
figure 1 : Comment se tirer d'un mauvais par le truchement d'une excuse bidon et foireuse
Marsh Posté le 03-06-2003 à 14:12:44
Harkonnen a écrit : |
On t'accordera les circonstances attnuantes...
Marsh Posté le 03-06-2003 à 14:13:18
Harkonnen a écrit : |
et si tu prenais un cours accelere d'excuses bidon chez antp
EDIT : tu as repondu trop vite petit filou. Bon allez j'arrete
Marsh Posté le 03-06-2003 à 13:42:46
Salut,
On a une boucle
int toto;
for(i=0;i<50;i++)
{
if(var[i] == 6)
toto = 6;
}
ce qui fait qu'à chaque fois que var[i] == 6 on affecte à toto la valeur 6; mais mettons que var[] contiennent dix 6, on affectera à toto dix fois la même valeur, donc ne vaut-il mieux pas tester si toto == 6 et si ce n'est pas le cas on affecte, plutot que d'affecter à chaque fois ?
merci
ANT
Message édité par antsite le 03-06-2003 à 13:45:50