Redéfinir une liste
Résolu/Fermé
Sara426
Messages postés
678
Date d'inscription
mardi 6 octobre 2009
Statut
Membre
Dernière intervention
16 décembre 2015
-
5 nov. 2011 à 16:10
Sara426 Messages postés 678 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 16 décembre 2015 - 8 nov. 2011 à 08:15
Sara426 Messages postés 678 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 16 décembre 2015 - 8 nov. 2011 à 08:15
A voir également:
- Redéfinir une liste
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste groupe whatsapp - Guide
- Liste site streaming illégal - Accueil - Services en ligne
- Liste de diffusion whatsapp - Guide
3 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié par KX le 5/11/2011 à 16:16
Modifié par KX le 5/11/2011 à 16:16
"ajouter" ne modifies pas h, il créé une nouvelle liste indépendante.
Il faut que tu fasses h = ajouter 2.0 h;; pour modifier h.
La confiance n'exclut pas le contrôle
Il faut que tu fasses h = ajouter 2.0 h;; pour modifier h.
La confiance n'exclut pas le contrôle
Sara426
Messages postés
678
Date d'inscription
mardi 6 octobre 2009
Statut
Membre
Dernière intervention
16 décembre 2015
63
6 nov. 2011 à 17:09
6 nov. 2011 à 17:09
Je recommence plus clair :
Mon fichier de départ :
let fichier =
[ ["pre";"02";"018392c0";"1c3b0000";"000003e8";"1b";"20546558206f757470757420323031312e30392e32393a31343234"];
["bop";"00000001";"00000000";"00000000";"00000000";"00000000";"00000000";"00000000";"00000000";"00000000";"00000000";"ffffffff"];
["push"];
["down3";"f20000"];
["pop"];
["down4";"028333da"];
["push"];
["down4";"fd8736d0"];
["push"];
] ;;
La fonction pre qui calcule juste la valeur dont j'ai besoin
let pre l =
let nume = (numero 2 l)
and den = (numero 3 l)
and mag = (numero 4 l) in
(hexa mag)*.(hexa nume)/.(10000.*.(hexa den)) ;;
La fonction qui lit le fichier et qui appelle pre
let lecture f = (*f sera le fichier appelé *)
let ligne = (top f) in
let fonction = (top ligne) and argument = (reste ligne) in
if fonction = "pre"
then let h = (ajouter (pre (argument) ) h) in h
else ....... ;;
La fonction lecture doit lit le premier élément du fichier.
Si c'est "pre", il doit appeller pre avec le reste de la liste, calculer la valeur et la mettre dans h.
Mon fichier de départ :
let fichier =
[ ["pre";"02";"018392c0";"1c3b0000";"000003e8";"1b";"20546558206f757470757420323031312e30392e32393a31343234"];
["bop";"00000001";"00000000";"00000000";"00000000";"00000000";"00000000";"00000000";"00000000";"00000000";"00000000";"ffffffff"];
["push"];
["down3";"f20000"];
["pop"];
["down4";"028333da"];
["push"];
["down4";"fd8736d0"];
["push"];
] ;;
La fonction pre qui calcule juste la valeur dont j'ai besoin
let pre l =
let nume = (numero 2 l)
and den = (numero 3 l)
and mag = (numero 4 l) in
(hexa mag)*.(hexa nume)/.(10000.*.(hexa den)) ;;
La fonction qui lit le fichier et qui appelle pre
let lecture f = (*f sera le fichier appelé *)
let ligne = (top f) in
let fonction = (top ligne) and argument = (reste ligne) in
if fonction = "pre"
then let h = (ajouter (pre (argument) ) h) in h
else ....... ;;
La fonction lecture doit lit le premier élément du fichier.
Si c'est "pre", il doit appeller pre avec le reste de la liste, calculer la valeur et la mettre dans h.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
6 nov. 2011 à 17:20
6 nov. 2011 à 17:20
J'imagine que top et reste sont deux méthodes qui te permettent de traiter le fichier...
Ce que tu peux faire c'est ça :
Ce que tu peux faire c'est ça :
let h = if fonction = "pre" then ajouter (pre argument) h else h; // ou une autre liste
Sara426
Messages postés
678
Date d'inscription
mardi 6 octobre 2009
Statut
Membre
Dernière intervention
16 décembre 2015
63
6 nov. 2011 à 17:24
6 nov. 2011 à 17:24
Exact. C'est pas bête comme solution.
J'essaierais ce soir, là je dois partir.
Je te tiens au courant.
Merci beaucoup.
J'essaierais ce soir, là je dois partir.
Je te tiens au courant.
Merci beaucoup.
Sara426
Messages postés
678
Date d'inscription
mardi 6 octobre 2009
Statut
Membre
Dernière intervention
16 décembre 2015
63
7 nov. 2011 à 21:22
7 nov. 2011 à 21:22
Je te remercie infiniment pour ton aide mais je laisse tomber avec Caml.
Je viens d'apprendre Python à moins de 2 heures et pour le moment ça marche beaucoup mieux que Caml (surtout pour tout ce qui est des types)
Encore merci pour tout et désolé que ça n'est servit à rien mais il faut bien avouer que Caml est très primitif pour programmer.
Je viens d'apprendre Python à moins de 2 heures et pour le moment ça marche beaucoup mieux que Caml (surtout pour tout ce qui est des types)
Encore merci pour tout et désolé que ça n'est servit à rien mais il faut bien avouer que Caml est très primitif pour programmer.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
8 nov. 2011 à 06:58
8 nov. 2011 à 06:58
Je ne rejoins pas ton avis sur la "primitivité" de Caml, c'est un langage très puissant, en particulier son typage fort qui permet de faire des programmes très sûrs.
Mais tout les langages ont leurs avantages et leurs inconvénients et certains s'adaptent mieux à certains besoins que d'autres. Et peut-être qu'effectivement pour ton problème le Python est plus adapté, mais ça ne fait pas de Caml un langage primitif ;-)
Mais tout les langages ont leurs avantages et leurs inconvénients et certains s'adaptent mieux à certains besoins que d'autres. Et peut-être qu'effectivement pour ton problème le Python est plus adapté, mais ça ne fait pas de Caml un langage primitif ;-)
Sara426
Messages postés
678
Date d'inscription
mardi 6 octobre 2009
Statut
Membre
Dernière intervention
16 décembre 2015
63
8 nov. 2011 à 08:15
8 nov. 2011 à 08:15
C'est vrai je suis d'accord. Caml est très pointu sur le typage et si tu veux faire quelque chose de fort pour ça il est parfait.
Par contre je pense qu'à mon niveau c'est prise de tête pour pas grand chose.
Tu as l'air de beaucoup programmer en caml, non ?
Par contre je pense qu'à mon niveau c'est prise de tête pour pas grand chose.
Tu as l'air de beaucoup programmer en caml, non ?
5 nov. 2011 à 16:19
Donc h doit se modifier uniquement après l'appel de la fonction.
5 nov. 2011 à 16:30
6 nov. 2011 à 16:01
Si je tape
let h = ajouter (fonction f ) h ;;
(avec f l'argument de la fonction)
Il me répond Valeur f inconnue (logique puisque la fonction n'a pas encore été lancée)
6 nov. 2011 à 16:11
Donne moi le code de "fonction" et quelques explications sur ce qu'il faut faire.
6 nov. 2011 à 16:14
let nume = (numero 2 l)
and den = (numero 3 l)
and mag = (numero 4 l) in
let t = (hexa mag)*.(hexa nume)/.(10000.*.(hexa den)) in t ;;
avec numero x l qui prend l'élément placé en x position de la liste l
et hexa h qui passe un nombre hexadecimal en decimal
(ces deux fonctions marchent très bien, je les ai testé)
Je voudrais que la valeur t soit mis dans la liste h.