9 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Paritée d'un int

n°2127
Deather2
OpenBSD: the way to go!
Posté le 09-03-2004 à 23:29:19  profilanswer
 

Yop ^^
 
Je recherche une fonction qui retourne une valeur si le nombre donné en arg est paire et une autre valeur si le nombre est impair :)
 
Merci à tous ^^

mood
Google
Posté le 09-03-2004 à 23:29:19  profilanswer
 

n°2128
nicodache
marmotte en chocolat concept ©
Posté le 09-03-2004 à 23:30:18  profilanswer
 

Code :
  1. boolean paire(int param) {
  2.     if ((param % 2) == 0)
  3.         return true;
  4.     else
  5.         return false;
  6. }


 
ca ira ?
 
(c'est un mélange de C, de c++ ou java[:dslam])
 
[edit]je viens de voir qu'il fallait du C :D
 

Code :
  1. /* renvoie 1 si le nombre est pair */
  2. int paire(int param) {
  3.     if ((param % 2) == 0)
  4.         return 1;
  5.     else
  6.         return 0;
  7. }


 
autre fonction, toujours en C

Code :
  1. /* renvoie 0 si le chiffre est pair, 1 sinon */
  2. int paire(int param) {
  3.     return (param % 2);
  4. }


 
vala :)


Message édité par nicodache le 09-03-2004 à 23:35:45

---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°2129
bap2703
Posté le 09-03-2004 à 23:41:51  profilanswer
 

Je sais pas si on peut faire ca en C : tester le bit de poid le plus faible du nombre

n°2130
nicodache
marmotte en chocolat concept ©
Posté le 09-03-2004 à 23:49:11  profilanswer
 

si :)
mais je sais plus comment :D
 
faut aller voir dans les fonctions de manipulation de bit, <<, >>, ^, etc


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°2131
Deather2
OpenBSD: the way to go!
Posté le 09-03-2004 à 23:55:25  profilanswer
 

Merci pour cette rapiditée :D

n°2132
nicodache
marmotte en chocolat concept ©
Posté le 10-03-2004 à 00:00:45  profilanswer
 

sinon, on peut faire gruik aussi :D
 

Code :
  1. /* renvoie 1 si le nombre passé en parametre est pair */
  2. int paire(int param) {
  3.     if (param < -1) {
  4.         while ((param != 1) && (param != 0)) {
  5.             param = param + 2;
  6.         }
  7.     else
  8.     if (param > 1)
  9.         while ((param != 1) && (param != 0)) {
  10.             param = param -2;
  11.         }
  12.     if (param == 0) // pair
  13.         return 1;
  14.     if ((param == 1) || (param == -1)) // impair
  15.         return 0;
  16. }


 
[:dslam]


Message édité par nicodache le 10-03-2004 à 00:01:18

---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°2133
xstephx
Sarah!
Posté le 10-03-2004 à 00:03:29  profilanswer
 

ça c du code optimisé qui ne nécessite que très peu d'itérations nico ! [:dslam]


---------------
Gagnez un iPhone en jouant sur www.findupays.be
n°2134
nicodache
marmotte en chocolat concept ©
Posté le 10-03-2004 à 00:12:48  profilanswer
 

ya moyen de faire pire :D
note que ya moyen de faire mieux :D


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°2135
Deather2
OpenBSD: the way to go!
Posté le 10-03-2004 à 00:18:59  profilanswer
 

mdr :D
je suis entrain d'en faire une moi même, je comprend pas pourquoi ca bug :

Code :
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int parity(int nbr)
  4. {
  5.     int c;
  6.     while(1)
  7.     {
  8.         if(nbr>=10)
  9.         {
  10.               c=nbr;
  11.               nbr=(c-10);
  12.         }
  13.         else break;
  14.     } 
  15.    
  16.    
  17.     printf("\nnombre obtenu apres le while : %d",nbr); // ICI il me trouve toujours le nombre 9 :/
  18.     switch(nbr)
  19.     {
  20.         case 0||2||4||6||8:
  21.         return 1;
  22.         default:
  23.         return 2;
  24.     }
  25. }
  26. int main()
  27. {
  28.     system("cls" );
  29.     int nbr=0;
  30.     printf("Entrez un nombre : " );
  31.     nbr=getchar();
  32.     if((parity(nbr)==1)) printf("\npair.\n" );
  33.     else printf("\nimpaire.\n" );
  34. }

n°2136
nicodache
marmotte en chocolat concept ©
Posté le 10-03-2004 à 00:26:37  profilanswer
 

rhooo c'est dégueu comme code [:dslam]
 

Code :
  1. /* renvoie 1 si pair, 2 sinon */
  2. int parity(int nbr) {
  3.     if ((param % 2) == 0)
  4.         return 1;
  5.     else
  6.         return 2;
  7. }
  8. int main() {
  9.     int nbr = 0; // d'abord les variables, puis le code
  10.     system("cls" ); // pouf, plus rien sur l'écran
  11.     printf("entrez un nombre entier : " );
  12.     nbr = getchar();
  13.     /* tests divers sur le caractere lu... réel, float, lettre... */
  14.     if (parity(nbr) == 1)
  15.         prinf("%i est pair\n", nbr);
  16.     else printf("%i est impair\n", nbr);
  17.     return 0; // tu as un INT main, donc on renvoie un entier a la fin
  18. }


 
ps : si tu est sous linux, une bonne idée pour coder correctement, gcc -options de compil -Wall (warning all)


Message édité par nicodache le 10-03-2004 à 00:27:14

---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°2137
Deather2
OpenBSD: the way to go!
Posté le 10-03-2004 à 00:36:39  profilanswer
 

C'est codé en 5 minutes :D
 
Sinon, je ne comprend pas pourquoi tu divise par 2 ? Si je met 10, il divise par deux et renvoie 2 ? Alors que 10 est pair :/
je supose que je me trompe qqpart dans l'interpretation de ton code lol tu n'aurai pas fait une faute si evidente :P


Message édité par Deather2 le 10-03-2004 à 00:38:08
n°2138
Deather2
OpenBSD: the way to go!
Posté le 10-03-2004 à 01:09:09  profilanswer
 

Bon ta fonction marche je la garde, cependant j'aimerai bien que tu m'explique à quoi correspond le caractere "%"
merci bcp :)

n°2139
Deadog
Dain Bramaged
Posté le 10-03-2004 à 01:28:43  profilanswer
 

% c'est pas diviser mais modulo
 
et pour un booléen, on utilise char, pas int
 
pour tester les bit de poid le plus faible utilise & ou | c'est très simple
 
option pour gcc :
-Wall -std=ansi
ou au moins -std=c99

n°2140
nicodache
marmotte en chocolat concept ©
Posté le 10-03-2004 à 01:45:26  profilanswer
 

et gcc -ansi -Wall ca marche aussi nan ?
 
tu entend quoi par char pour les boolean a la place de int ?


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°2141
Deather2
OpenBSD: the way to go!
Posté le 10-03-2004 à 07:10:29  profilanswer
 

Merci Deadog & Nicodache
 
Perso, j'utilise jamais bool je remplace par int car mon compilateur me sort "parse error bofre <nom de la fonx>" ( dev-c++ ) :/

n°2143
Deadog
Dain Bramaged
Posté le 10-03-2004 à 12:27:47  profilanswer
 

j'suis plus sur pour le ansi, pê bien
 
int utilise 4 octet, char 1 seul

n°2144
nicodache
marmotte en chocolat concept ©
Posté le 10-03-2004 à 14:20:56  profilanswer
 

tu confond pas avec byte ?
 
pour moi char, c'est 8 bytes, pour les 256 lettres de l'ansi, j'me trompe ?


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°2147
CryoGen
Powered by kitkat©
Posté le 10-03-2004 à 16:37:31  profilanswer
 

char -> 1 octet
int -> depend du proco :D , taille max du systeme d'adressage en gros :D
32bits -> 4 octets
64 bits -> 8 octets


Message édité par CryoGen le 10-03-2004 à 16:39:10

---------------
I am the bone of my sword...
n°2148
ced-2k
TODO : Insert text here.
Posté le 10-03-2004 à 17:04:09  profilanswer
 

Deather2 a écrit :

Merci Deadog & Nicodache
 
Perso, j'utilise jamais bool je remplace par int car mon compilateur me sort "parse error bofre <nom de la fonx>" ( dev-c++ ) :/

oui mais tu dois mettre char et pas bool ou int
deadog a raison :jap:


Message édité par ced-2k le 10-03-2004 à 17:04:21
n°2154
nicodache
marmotte en chocolat concept ©
Posté le 10-03-2004 à 19:23:32  profilanswer
 

nicodache a écrit :

tu confond pas avec byte ?
 
pour moi char, c'est 8 bytes, pour les 256 lettres de l'ansi, j'me trompe ?


si je commence a confondre bytes et bits, on est pas rendus...
j'ai rien dis, excusez moi :D
 
[edit]quoi que conceptuellement, c'est mieux d'utiliser le type byte (ca existe je pense) que char, pour stocker une réponse de type booléenne...
pitet parce que moi on m'a toujours fait mettre des lettres dans des chars, et non pas des réponses binaires :D


Message édité par nicodache le 10-03-2004 à 19:25:09

---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°2156
Deadog
Dain Bramaged
Posté le 11-03-2004 à 02:34:46  profilanswer
 

en C pur, sans inclure aucune libraire, byte ,'existe pas
il faut faire un typedef pour ça, typedef qui renvoie sur char ...


Message édité par Deadog le 11-03-2004 à 02:35:15
n°2157
nicodache
marmotte en chocolat concept ©
Posté le 11-03-2004 à 08:56:51  profilanswer
 

oki chef :jap:


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
mood
Google
Posté le 11-03-2004 à 08:56:51  profilanswer
 


Aller à :
Ajouter une réponse
 

Hit Parade