Bienvenue, Invité. Veuillez vous connecter ou vous enregistrer.
Avez-vous perdu votre courriel d'activation?
09 Septembre 2010, 10:20:13

Connexion avec identifiant, mot de passe et durée de la session
Accueil Aide Recherche Identifiez-vous Enregistrez-vous
forum.mangue.org  |  [LANGAGES]  |  Perl, Python, Rebol, shell, etc. (Modérateurs: ptidom, tetram9)  |  Sujet: [CAML] Addition binaire 0 Membres et 1 Invité sur ce sujet.
Pages: [1] Imprimer
Auteur Sujet: [CAML] Addition binaire  (Lu 830 fois)
ptidom
Moderator
Sr. Member
*****
Sexe: Homme
Messages: 353


reste cool


Voir le profil WWW
[CAML] Addition binaire
« le: 15 Novembre 2004, 16:13:46 »

Tout est dans le titre, je ne vois pas du tout comment gerer la retenu dans une addition de nombre binaire, avec cei par exemple
Code:

let tab1 = [|1;0;0;1;0;1;0;1;0|];;
let tab2 = [|0;0;1;0;1;0;1;0;1|];;


A la main ya pas de soucis, bien sur, mais je vois pas comment le programmé, et google a rien pour moi Smiley
Journalisée

- ptidom -
tetram9
Moderator
Dieu
*****
Sexe: Homme
Messages: 1252


Voir le profil WWW
Re: [CAML] Addition binaire
« Répondre #1 le: 15 Novembre 2004, 17:34:00 »

c'est pas plus simple de faire l'addition en décimal et de convertir le résultat ?
Journalisée

Shaoulah
Mangue.org - CA
Full Member
*****
Messages: 189


Blurp ...


Voir le profil
Re: [CAML] Addition binaire
« Répondre #2 le: 15 Novembre 2004, 18:32:43 »

J'avais codé un truc dans le genre en SML quand j'étais à la fac, je regarde si je retrouve et je te dis ....
Journalisée
ptidom
Moderator
Sr. Member
*****
Sexe: Homme
Messages: 353


reste cool


Voir le profil WWW
Re: [CAML] Addition binaire
« Répondre #3 le: 15 Novembre 2004, 21:45:43 »

tetram9> oui, mais non, en caml (sous windows surement) ce nombre :
Code:
let a = 0x89ABCDEF

"depasse " les entiers, donc la prof nous a dit de partir sur des entiers representés par par des tableau


Shaoulah> ca serait super Smiley, en plus je connais SML, par mon passage à la fac d'amiens Smiley
Journalisée

- ptidom -
dake
Mangue.org - ZP
Full Member
***
Sexe: Homme
Messages: 136



Voir le profil WWW
Re: [CAML] Addition binaire
« Répondre #4 le: 16 Novembre 2004, 00:20:29 »

Je ne connais pas du tout le Caml (normal  Cool alors je pars du principe que ça ressemble aux langages fonctionnels que j'ai déjà rencontré. Si l'on considère les tab1 et tab2 comme des listes alors tu dois pouvoir récupérer le dernier élément de la liste et recréer deux listes sans leur dernier élément. Tu prends tes deux éléments terminaux, tu fais ton addition binaire selon la retenue, tu gardes la retenue obtenue dans un coin (tu peux la mettre dans une liste pour simuler une pile) et ainsi de suite jusqu'à ce que tes listes soient vides.

Journalisée

ptidom
Moderator
Sr. Member
*****
Sexe: Homme
Messages: 353


reste cool


Voir le profil WWW
Re: [CAML] Addition binaire
« Répondre #5 le: 17 Novembre 2004, 15:04:33 »

ah ouais peut etre....
Journalisée

- ptidom -
Shaoulah
Mangue.org - CA
Full Member
*****
Messages: 189


Blurp ...


Voir le profil
Re: [CAML] Addition binaire
« Répondre #6 le: 17 Novembre 2004, 21:25:32 »

ptidom: désolé mais impossible de mettre la main sur mon programme ...
Journalisée
ptidom
Moderator
Sr. Member
*****
Sexe: Homme
Messages: 353


reste cool


Voir le profil WWW
Re: [CAML] Addition binaire
« Répondre #7 le: 18 Novembre 2004, 21:16:16 »

voila ce que j'ai reussi a faire, mais j'ai une erreur que je comprend pas vraiment, et surtout me taper pas j'ai jamais appris le caml Smiley

Code:

let addbinaire b1 b2=
let retenue = 0 and i = ref 0 and taille = (Array.length b1) in
let addret bit1 bit2 ret =

if bit1 = 0 && bit2 = 0 && ret = 0 then
[0;0]
else if (bit1 = 0 && bit2 = 0 && ret = 1) || (bit1 = 0 & bit2 = 1 & ret = 0) || (bit1 = 1 & bit2 = 0 & ret = 0) then
[0;1]
else if (bit1 = 0 && bit2 = 1 && ret = 1) || (bit1 = 1 & bit2 =0  & ret = 1) || (bit1 = 1 & bit2 = 1 & ret = 0) then
[1;0]
else if (bit1 = 1 && bit2 = 1 && ret = 1)  then
[1;1]

in while !i<taille do
l = addret b1.(!i) b2.(!i) retenue;
(*retenue := l.(0);
sortie.(!i) <- l.(1);*)

done;
sortie;
;;



et l'erreur est  This expression has type 'a list but is here used with type unit sur le [1;1]

et je vois pas
Journalisée

- ptidom -
ptidom
Moderator
Sr. Member
*****
Sexe: Homme
Messages: 353


reste cool


Voir le profil WWW
Re: [CAML] Addition binaire
« Répondre #8 le: 19 Novembre 2004, 17:14:54 »

bon et bien maintenant je suis bloqué la, si quelqu'un pouvait m'aider :

Code:


let addbinaire b1 b2=
let retenue = 0 and i = ref 0 and taille = (Array.length b1) and l = [||]
and sortie = Array.make (Array.length b1) 
and addret bit1 bit2 ret =

if (bit1 = 0 && bit2 = 0 && ret = 0) then
[|0;0|]
else if (bit1 = 0 && bit2 = 0 && ret = 1) || (bit1 = 0 & bit2 = 1 & ret = 0) || (bit1 = 1 & bit2 = 0 & ret = 0) then
[|0;1|]
else if (bit1 = 0 && bit2 = 1 && ret = 1) || (bit1 = 1 & bit2 =0  & ret = 1) || (bit1 = 1 & bit2 = 1 & ret = 0) then
[|1;0|]
else
[|1;1|]

in while !i<taille do
l = addret b1.(!i) b2.(!i) retenue;
retenue =  l.(0);
sortie.(!i) = l.(1);
i :=!i+1;

done;
sortie;

;;


Journalisée

- ptidom -
ptidom
Moderator
Sr. Member
*****
Sexe: Homme
Messages: 353


reste cool


Voir le profil WWW
Re: [CAML] Addition binaire
« Répondre #9 le: 21 Novembre 2004, 12:04:10 »

ben ya personne qui connait un peu caml, et qui veut l'installer vite fait pour me depanner  Huh
Journalisée

- ptidom -
ptidom
Moderator
Sr. Member
*****
Sexe: Homme
Messages: 353


reste cool


Voir le profil WWW
Re: [CAML] Addition binaire
« Répondre #10 le: 22 Novembre 2004, 15:26:02 »

Code:
let addbinaire b1 b2=
let retenue = ref  0

and taille = (Array.length b1)
and i =ref ((Array.length b1)-1)
and sortie = Array.make (Array.length b1)  0
and addret bit1 bit2 ret =

match
(bit1,bit2,ret)
with
(0,0,0) -> [|0;0|]
|(0,0,1) -> [|0;1|]
|(0,1,0) -> [|0;1|]
|(1,0,0) -> [|0;1|]
|(0,1,1) -> [|1;0|]
|(1,0,1) -> [|1;0|]
|(1,1,0) -> [|1;0|]
|(1,1,1) -> [|1;1|]
| _ -> [||]


in while !i >= 0 do
let l = addret b1.(!i) b2.(!i) !retenue in
retenue :=  l.(0);

sortie.(!i) <- l.(1);
decr i;

done;
sortie;

;;

addition binaire modulo 32 bits
Journalisée

- ptidom -
Pages: [1] Imprimer 
forum.mangue.org  |  [LANGAGES]  |  Perl, Python, Rebol, shell, etc. (Modérateurs: ptidom, tetram9)  |  Sujet: [CAML] Addition binaire
Aller à:  

forum.mangue.org | Propulsé par SMF 1.0.8.
© 2001-2004, Lewis Media. Tous droits réservés.
Page générée en 0.718 secondes avec 18 requêtes.