Bonsoir,
Je dois réaliser une fonction paramétrée par n, dont le résultat est un caractère. Je ne sais pas comment donner un caractère comme résultat!
Naël
Bonsoir,
Je dois réaliser une fonction paramétrée par n, dont le résultat est un caractère. Je ne sais pas comment donner un caractère comme résultat!
Naël
Salut,
quand on débute il est bien utile de consulter le manuel de référence. Celui d'OCaml est très bon (j'ai appris ce langage grâce à cet ouvrage), celui de Caml Light, je n'en sais rien (mais j'imagine qu'il est de même qualité). Tu peux trouver le manuel de référence d'OCaml en version html ou pdf. Pour Caml Light, je te laisse googueler.
Pour répondre tout de même à ta question, les caractères simples sont décris en Caml entourés de guillemets simples ('). Ainsi, 'a' est du type char. Si tu avais d'autres question de ce genre, merci de ne pas les poser sur le forum mais de te référer au manuel (td; dr: RTFM).
Cdlt,
Je me suis mal exprimé je pense, je sais comment on écrit un caractère.. Pour m'aider à m'expliquer je voudrais savoir si vous connaissez le module Cartes?
Merci quand même pour le cours, je vais le consulter !![]()
Tu ne m'expliques pas ton problème là ... Enfin, pour plus d'info sur les caractères en OCaml, le module Char peut aider (le manuel en parle ...).
Oui mais justement pour me permettre de m'expliquer je t'ai posé une question
En cours je travaille sur un module qui s'appelle Cartes, c'est un simulateur qui permet de manipuler des tas de cartes (4 tas). Mon problème est donc celui-ci :
"Réalisez une fonction couleur_en_char paramétrée par un numéro de tas n, dont le résultat est un caractère. Ce caractère est l'un des caractères suivants :
- 'T' si la carte située au sommet du tas n est un trêfle;
- 'K' si la carte située au sommet du tas n est un carreau;
- 'C' si la carte située au sommet du tas n est un coeur;
- 'P' si la carte située au sommet du tas n est un pique.
Donc j'ai voulu commencer à écrire ma fonction en écrivant :
En gros je veux dire que "si le sommet est un trèfle, alors -> 'T' , si c'est un carreau -> 'K' , etc. Mais je ne vois pas comment faire! Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 let couleur_en_char (n) = if sommet_trèfle(n) then ...
Voila ! Une question bien posée ! Les quatre messages précédents ne servent à rien, si ton premier message avait été celui-ci tu aurais déjà eu une réponse.
Alors la réponse se trouve dans le manuel de référence. Une première solution serait d'imbriquer des if :
Mais OCaml te fournit une syntaxe bien plus agréable : le matching :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 let couleur_en_char couleur = if couleur = Carte.pique then 'P' else if couleur = ...
Et enfin, une syntaxe particulière pour les fonctions faisant un matching d'un de ses arguments :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 match couleur with | Carte.pique -> valeur si pique | Carte.trefle -> valeur si trèfle ...
Mais lis le manuel !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 let couleur_en_char = function | Carte.pique -> valeur si pique | Carte.trefle -> valeur si trèfle ...
Haha désolé !
Merci pour les pistes que tu me donnes, je vais donc les suivre et lire le manuel au passage!
Merci beaucoup, bonne journée!
Re-bonjour,
J'ai essayé la première méthode, c'est à dire l'imbrication if ce qui donne :
Quand j'exécute le programme, j'ai ce message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 open Cartes;; let couleur_en_char (n) = if sommet_trefle(n) = true then 'T' else if sommet_pique(n) = true then 'P' else if sommet_coeur(n) = true then 'C' else if sommet_carreau(n) = true then 'K' end ;;
Ca veut dire qu'il y a un problème avec "end" mais je ne vois pas lequel?File "couleur_en_char.ml", line 12, characters 0-3:
Error: Syntax error
Merci d'avance
Il manque un else au dernier if. Sémantiquement tu n'en a pas besoin, mais la syntaxe d'OCaml l'impose. Si, après avoir testé les trois premières couleurs, tu es sûre que ta carte est de la quatrième, inutile de la tester : retourne directement le caractère pour cette quatrième couleur.
Si tu souhaites tout de même vérifier (et donc gérer les cas erronés), tu peux retourner un caractère spécial (mais ce n'est pas conseillé, préférer le type 'a option), ou lève une erreur (failwith "message d'erreur").
Ah oui j'suis bête! J'ai rectifié ça et supprimer le end et ça marche !! Mon exam est demain, j'espère qu'avec ça ça va aller!
En tout cas merci pour ton aide, tu m'as bien aidé.![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager