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

  FORUM HardWare.fr
  Programmation
  PHP

  tester si un chiffre est paire ou impaire

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

tester si un chiffre est paire ou impaire

n°1231418
DrWatson
_@''
Posté le 26-10-2005 à 12:25:28  profilanswer
 

Bonjour,
 
Existe t il en php une fonction qui retourne si une variable numérique est paire ou impaire ?


---------------
.:: Feed-Back  ::. Choisis un travail que tu aimes, et tu n'auras pas à travailler un seul jour de ta vie.
mood
Publicité
Posté le 26-10-2005 à 12:25:28  profilanswer
 

n°1231422
masklinn
í dag viðrar vel til loftárása
Posté le 26-10-2005 à 12:27:46  profilanswer
 

DrWatson a écrit :

Bonjour,
 
Existe t il en php une fonction qui retourne si une variable numérique est paire ou impaire ?


variable%2


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1231427
DrWatson
_@''
Posté le 26-10-2005 à 12:32:01  profilanswer
 

merci mais y'a moyen d'avoir la traduction stp ? google n'est pas mon ami sur ce coup.
 
Le % en php avec la valeur 2 équivaut à voir si le chiffre est divisble par 2 en restant entier et donc paire :??:


---------------
.:: Feed-Back  ::. Choisis un travail que tu aimes, et tu n'auras pas à travailler un seul jour de ta vie.
n°1231428
DrWatson
_@''
Posté le 26-10-2005 à 12:33:06  profilanswer
 

un truc du genre

Code :
  1. if (variable%2) echo "paire";
  2. else echo "impaire";


 
doit donc fonctionner ?


Message édité par DrWatson le 26-10-2005 à 12:33:15

---------------
.:: Feed-Back  ::. Choisis un travail que tu aimes, et tu n'auras pas à travailler un seul jour de ta vie.
n°1231433
karoli
Posté le 26-10-2005 à 12:35:47  profilanswer
 

le modulo (% en php) te retourne le reste de la division (par 2 dans ton cas)
si tavariable%2 = 0 ==> tavariable est paire

n°1231434
masklinn
í dag viðrar vel til loftárása
Posté le 26-10-2005 à 12:37:08  profilanswer
 

Non, c'est l'inverse, % c'est l'opérateur modulo [:petrus75]
 
a%b donne le reste de la division de a par b (sur les divisions d'entiers).
 
Donc n%2 avec n pair donne toujours "0", et n%2 avec n impair donne "1".
 
Donc  

if(n%2)
    echo "impair"
else
    echo "pair"


Message édité par masklinn le 26-10-2005 à 12:37:29

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1231441
DrWatson
_@''
Posté le 26-10-2005 à 12:44:17  profilanswer
 

en tout cas c'est bien ce dont j'avais besoin merci bcp :) (en fait c'est pour alterner la couleur de fond de message un sur deux. Est ce que c'est comme ça que font les forums ? un message sur deux change de couleur, ça doit bien se baser sur ce genre de principe ...


---------------
.:: Feed-Back  ::. Choisis un travail que tu aimes, et tu n'auras pas à travailler un seul jour de ta vie.
n°1231442
masklinn
í dag viðrar vel til loftárása
Posté le 26-10-2005 à 12:45:25  profilanswer
 

Ca dépend, ça c'est la manière la plus propre de le faire, mais certains mettent en place un compteur et le modifient à chaque opération (genre un compteur oscillant entre 1 et -1, négativé à chaque tour de boucle)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1231448
Xav_
The only one...
Posté le 26-10-2005 à 12:53:55  profilanswer
 

DrWatson a écrit :

en tout cas c'est bien ce dont j'avais besoin merci bcp :) (en fait c'est pour alterner la couleur de fond de message un sur deux. Est ce que c'est comme ça que font les forums ? un message sur deux change de couleur, ça doit bien se baser sur ce genre de principe ...


tout à fait, et en faisant justement ta recherche sur le alterner 1 fois sur 2, je pense que tu tomber direct sur la solouce, déjà abordée sur ce forum :P


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°1232080
leflos5
On est ou on est pas :)
Posté le 27-10-2005 à 01:24:27  profilanswer
 

... Putain les autodidactes ils font comment à part  avoir 5 neurones en plus ...
 
Google est ton ami si tu sais t'en servir ;)

mood
Publicité
Posté le 27-10-2005 à 01:24:27  profilanswer
 

n°1241452
DrWatson
_@''
Posté le 08-11-2005 à 17:14:07  profilanswer
 

leflos5 a écrit :

... Putain les autodidactes ils font comment à part  avoir 5 neurones en plus ...
 
Google est ton ami si tu sais t'en servir ;)


 
 
toi tu vas me sortir que tu n'as jamais rien demandé à personne et que tu es autodidacte dans tous les domaines  :sarcastic: vieux rabajoie va

n°1241698
leflos5
On est ou on est pas :)
Posté le 08-11-2005 à 20:37:45  profilanswer
 

DrWatson a écrit :

toi tu vas me sortir que tu n'as jamais rien demandé à personne et que tu es autodidacte dans tous les domaines  :sarcastic: vieux rabajoie va


Si mais je cherche toujours avant, je me suis toujours pris la tête pendant des heures tant que je comprennais pas ou que ça marchait pas ;)
 
Donc avant de demander, c'est un problème de maths donc on cherche la solution mathématique avant de la modéliser et de mettre 3s à trouver que modulo en php comme beaucoup de langages c'est %...
 
La réaction était démesurée je l'accorde, je devais être fatigué :P

n°1241857
zapan666
Tout est relatif
Posté le 08-11-2005 à 22:30:41  profilanswer
 

sinon y'a ça

Code :
  1. if($var&1) {
  2. //impaire
  3. }else{
  4. //paire
  5. }



---------------
my flick r - Just Tab it !
n°1242193
100top
Posté le 09-11-2005 à 14:11:06  profilanswer
 

DrWatson a écrit :

Bonjour,
 
Existe t il en php une fonction qui retourne si une variable numérique est paire ou impaire ?


 
 
amusant ;)

Code :
  1. if(pow(-1^$chiffre)==1) {
  2. c paire
  3. }
  4. else
  5. { c po paire }

n°1242309
DjMerguez
Posté le 09-11-2005 à 15:18:41  profilanswer
 

On peut faire encore pire : :D  
 

Code :
  1. $pair = false;
  2. for($i = 0; $i < 2147483647 && !$pair; $i += 2) {
  3.     $pair = ($nombre == $i);
  4. }
  5. echo $chiffre
  6. . ($pair ? ' est ' : ' n\'est pas ')
  7. . 'pair';


 
Blague à part, la solution de zapan66 (ET binaire avec 00000001) me parait un petit poil plus efficace que le modulo 2.
 
Edit (ajout 2° condition arrêt boucle) suite à la pertinente ramrque de omega2  :ange:

Message cité 1 fois
Message édité par DjMerguez le 09-11-2005 à 15:38:48
n°1242321
omega2
Posté le 09-11-2005 à 15:32:05  profilanswer
 

DjMerguez > Marche pas ton truc vu qu'il dire que c'est pas pair sauf si $nombre=2147483646
 
Le coup du ET binaire me semble le mieux en effet même si j'ai pas fait avec me rapellant jamais quel est l'opérateur qui fait ça. :lol:

n°1242340
masklinn
í dag viðrar vel til loftárása
Posté le 09-11-2005 à 15:45:37  profilanswer
 

DjMerguez a écrit :

me parait un petit poil plus efficace que le modulo 2.


En termes de perfs [:petrus dei]
 
J'dois dire que si t'en es à comparer les perfs de l'arithmétique booléenne par rapport au modulo, t'es pas censé faire du PHP hein [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1242347
dwogsi
Défaillance cérébrale...
Posté le 09-11-2005 à 15:52:15  profilanswer
 

Hummm j'viens de penser à une autre technique pour trouver ca :

Code :
  1. <?
  2. if ( ceil($num/2) == $num/2 ) {
  3.    echo "C'est pair";
  4. }else{
  5.     echo "C'est pas pair";
  6. }
  7. ?>

Message cité 1 fois
Message édité par dwogsi le 09-11-2005 à 15:52:54

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1242414
mechkurt
Posté le 09-11-2005 à 16:46:13  profilanswer
 

dwogsi: c'est comme ca que je faisait en actionscript (enfin de memoire je comparais Math.floor() et Math.ceil())
 
je sais c'est nul mais la prog en autodidacte c'est rarement beau  :D  


---------------
D3
n°1242420
dwogsi
Défaillance cérébrale...
Posté le 09-11-2005 à 16:50:32  profilanswer
 

Bah non c'est pas nul, ca veut dire que plutôt que d'utiliser des choses toutes faites tu est capable de trouver une solution avec d'autres outils. Certains dirons que c'est pas "optimisé" mais bon pour ce que ca prend une division et une comparaison....
 
et puis t'en fait une fonction comme ca t'es tranquile! Genre :
 

Code :
  1. <?
  2. function pair($num) {
  3.     if ( ceil($num/2) == $num/2 ) {
  4.        Return TRUE;
  5.     }else{
  6.         Return FALSE;
  7.     }
  8. }
  9. ?>


 
Je sais je sais c'est complétement innutile...
 
Au fait, même quand on est autodidacte, on peut avoir les bonnes solutions. Mais il faut savoir être patient!

Message cité 1 fois
Message édité par dwogsi le 09-11-2005 à 16:51:46

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1242520
mechkurt
Posté le 09-11-2005 à 18:35:22  profilanswer
 

;)


---------------
D3
n°1242596
DjMerguez
Posté le 09-11-2005 à 19:53:12  profilanswer
 

masklinn a écrit :

J'dois dire que si t'en es à comparer les perfs de l'arithmétique booléenne par rapport au modulo, t'es pas censé faire du PHP hein


 
Je suis bien d'accord que dans la plupart des cas c'est pas très rentable de passer du temps à optimiser du PHP, mais, dans ce cas, si le code sert par exemple à changer la couleur des TR d'une table qui a des milliers de lignes, ça vaut la peine de chercher à gratter un peu de charge processeur.

n°1242605
DrWatson
_@''
Posté le 09-11-2005 à 20:17:05  profilanswer
 

:lol: merci les gars pour le concours, si avec ça j'ai pas ce que je veux ;)
 
donc pour vous la soluce de zapan reste la meilleure

n°1242744
zapan666
Tout est relatif
Posté le 09-11-2005 à 22:22:44  profilanswer
 

dwogsi a écrit :


Code :
  1. <?
  2. function pair($num) {
  3.     if ( ceil($num/2) == $num/2 ) {
  4.        Return TRUE;
  5.     }else{
  6.         Return FALSE;
  7.     }
  8. }
  9. ?>



Tu te complique la vie !

Code :
  1. <?
  2. function pair($num) {
  3.     return ( ceil($num/2) == $num/2 );
  4. }
  5. ?>


et donc avec ma solution :  

Code :
  1. <?php
  2. function isPair($num) { return ($num&1); }
  3. ?>


---------------
my flick r - Just Tab it !
n°1242750
TheRom_S
Posté le 09-11-2005 à 22:27:28  profilanswer
 

DrWatson a écrit :

donc pour vous la soluce de zapan reste la meilleure


c'est la meilleure pour zapan et DjMerguez ;
 
moi je prefère la solution que j'ai toujours utilisé :

Code :
  1. switch($num) {
  2.     case:0
  3.         // pair;
  4.         break;
  5.     case:1
  6.         // impair;
  7.         break;
  8.     case:2
  9.         // pair;
  10.         break;
  11.     case:3
  12.         // impair;
  13.         break;
  14.     // etc ...
  15. }


 :lol:  :lol:  :lol:


---------------
The Rom's, à votre service
n°1242752
masklinn
í dag viðrar vel til loftárása
Posté le 09-11-2005 à 22:31:17  profilanswer
 

dwogsi a écrit :

Hummm j'viens de penser à une autre technique pour trouver ca :

Code :
  1. <?
  2. if ( ceil($num/2) == $num/2 ) {
  3.    echo "C'est pair";
  4. }else{
  5.     echo "C'est pas pair";
  6. }
  7. ?>



Ouais enfin là on perd en visibilité et on tape des appels de fonctions pour rien (par rapport au modulo ou à l'arithmétique binaire), donc ça n'a vraiment aucun intérêt, que des inconvénients


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1242849
leflos5
On est ou on est pas :)
Posté le 10-11-2005 à 03:06:08  profilanswer
 

masklinn a écrit :

Ouais enfin là on perd en visibilité et on tape des appels de fonctions pour rien (par rapport au modulo ou à l'arithmétique binaire), donc ça n'a vraiment aucun intérêt, que des inconvénients


JE pense plus que ce post a dévié pour dire que c'est simplement un problème mathématique qui n'a pas une solution unique en terme de résultat ;)
 
Une preuve qu'il faut réfléchir mais que la solution n'est pas unique, la classe n'est pas toujours la même, l'efficacité non plus mais preuve est que tout le monde peut trouver un truc qui plus est marant juste en méditant 5 minutes ;)
 
JE vois ça comme ça moi :)

n°1243975
DrWatson
_@''
Posté le 11-11-2005 à 18:18:48  profilanswer
 

si j'ai fais un topic ct pas pour me fabriquer une usine à gaz tu t'en doutes bien. Sachant qu'il existe un opérateur dédié à ça en partie, je suis bien content qu'on me l'ait appris / réappris
 

n°1244065
KiK0o
Posté le 11-11-2005 à 23:07:29  profilanswer
 

masklinn a écrit :

Ca dépend, ça c'est la manière la plus propre de le faire, mais certains mettent en place un compteur et le modifient à chaque opération (genre un compteur oscillant entre 1 et -1, négativé à chaque tour de boucle)


Ou alors $i=1-$i avec $i=0 ou 1 à l'initialisation. $i sera toujours à 1 ou 0.

n°1244255
omega2
Posté le 12-11-2005 à 14:14:52  profilanswer
 

Au fait, pour deux couleurs, personne n'a pensé à l'utilisation d'un booléen? if ($bool) {couleur1}else{couleur2}.
Aprés, pour passer d'une couleur à l'autre, il suffit de faire $bool = ! $bool;
 
Je me demande si c'est pas même plus rapide qu'une incrémentation suivit d'un ou booléen.

n°1244264
Elmoricq
Modérateur
Posté le 12-11-2005 à 14:30:09  profilanswer
 

switch (IsTrue(variable%2)) {
   case true: return true;
   case false: return false;
   default: return FileNotFound;
}
 
Les connaisseurs apprécieront :o

n°1244270
sielfried
Posté le 12-11-2005 à 14:36:10  profilanswer
 

omega2 a écrit :

Au fait, pour deux couleurs, personne n'a pensé à l'utilisation d'un booléen? if ($bool) {couleur1}else{couleur2}.
Aprés, pour passer d'une couleur à l'autre, il suffit de faire $bool = ! $bool;
 
Je me demande si c'est pas même plus rapide qu'une incrémentation suivit d'un ou booléen.


 
Ouais, c'est ça que je fais quand je dois alterner entre deux états, perso. [:spamafote]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1244271
masklinn
í dag viðrar vel til loftárása
Posté le 12-11-2005 à 14:39:14  profilanswer
 

Elmoricq a écrit :

switch (IsTrue(variable%2)) {
   case true: return true;
   case false: return false;
   default: return FileNotFound;
}
 
Les connaisseurs apprécieront :o


Code :
  1. Bool IsPair(int val) {
  2.     switch(IsTrue(val&1)) {
  3.         case true: return return_false();
  4.         case fase: return return_true_if_false_and_vice_versa(return_false());
  5.         default: return FileNotFound;
  6.     }
  7. }


 [:aloy]


Message édité par masklinn le 12-11-2005 à 14:39:47

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1244384
Paracetamo​l
Posté le 12-11-2005 à 18:52:04  profilanswer
 

Ça part pas un peu en couil*** votre truc ?
 
On peut pas faire ça tout simplement ?
 

Code :
  1. echo if ($nb%2) ? 'paire' : 'impaire';


 
Paracetamol

n°1244425
masklinn
í dag viðrar vel til loftárása
Posté le 12-11-2005 à 20:58:50  profilanswer
 

Paracetamol a écrit :

Ça part pas un peu en couil*** votre truc ?


t'es pas un connaisseur c'est tout [:spamafote]  

Citation :

On peut pas faire ça tout simplement ?
 

Code :
  1. echo if ($nb%2) ? 'paire' : 'impaire';



Comme suggéré plus haut par zapan, mieux vaut passer par le booléen: n&1 ? "impair" : "pair"
C'est tout aussi lisible et (en python) c'est 20% plus rapide.
 
(sans compter que ton machin est faut, soit tu utilises if soit tu utilises l'opérateur ternaire, mais pas les deux)à

n°1244444
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-11-2005 à 21:21:46  profilanswer
 

Moi perso, je ferais :
$compteur=1;
for gningningnin
{
echo '<div class="macss'.$compteur.'">';
$compteur++; if ($compteur>2) {$compteur=1)
}

n°1244453
masklinn
í dag viðrar vel til loftárása
Posté le 12-11-2005 à 21:30:27  profilanswer
 

The-Shadow a écrit :

Moi perso, je ferais :
$compteur=1;
for gningningnin
{
echo '<div class="macss'.$compteur.'">';
$compteur++; if ($compteur>2) {$compteur=1)
}


Code :
  1. for($i=0; $i<cond; $i++) {
  2.     echo '<div class="'.($i&1 ? 'odd' : 'even').'">';
  3.     /* snip */
  4. }


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1244525
KiK0o
Posté le 13-11-2005 à 03:09:23  profilanswer
 

masklinn a écrit :

Code :
  1. for($i=0; $i<cond; $i++) {
  2.     echo '<div class="'.($i&1 ? 'odd' : 'even').'">';
  3.     /* snip */
  4. }



Yeah!!! It Suks !!!

n°1244563
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 13-11-2005 à 12:40:13  profilanswer
 

Bonjour la lisibilité, mais pourquoi pas.


Message édité par The-Shadow le 13-11-2005 à 12:40:24
n°1335734
masseur
Posté le 30-03-2006 à 18:00:41  profilanswer
 

et le zéro il est consiéré comme quoi?

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  tester si un chiffre est paire ou impaire

 

Sujets relatifs
[Débutant] Comment tester scripts sans installer Oracle ?Tester si un service de windows est lancé depuis javascript
[PHP] Tester si IP (ou adresse) est valide??VS 2003 : tester si un fichier est présent dans projet de déploiement
fonction pour recuperer un chiffre d'une chaine [Résolu]Pouvez-vous tester mon site? Pb avec IE sous Mac
[C#] Tester un DataSet ??????[SQL Server] Tester si un champ = 0 dans clause SELECT
Sql Server Tester si un fichier existetester si une variable est nul
Plus de sujets relatifs à : tester si un chiffre est paire ou impaire


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