2017-02-18 3 views
-1

je veux pouvoir laisser l'utilisateur entrer une variable de type automate qui contient 5 champs ceci bien sûr m'oblige à trouver un moyen de prendre l'entrée de l'utilisateur pour remplir les listes voici mon code:remplir un automate avec des éléments donnés par l'utilisateur entrée dans ocaml

type automate = { 
etat_initial : int; 
ensemble_des_etats : int list; 
alphabets : char list; 
transitions :(int*char*int) list; 
etats_finaux : int list 
};; 

je l'ai déjà essayé d'utiliser une fonction appelée insertion qui insère un élément dans une liste, mais malheureusement pas de chance

Répondre

0

Je ne peux pas dire si votre problème est avec la lecture dans un automate en général ou avec l'ajout d'un élément à une liste.

Les listes dans OCaml sont immuables, il n'y a donc aucun moyen d'insérer une valeur dans une liste existante. Vous devez créer une nouvelle liste ayant le formulaire souhaité. Si vous ne vous souciez pas de la commande, le plus simple est d'ajouter la nouvelle valeur au début de cette liste: newval :: thelist.

Si vous vous souciez de l'ordre, vous devez chercher dans la liste le bon endroit. Voici un code pour ajouter une nouvelle valeur à une liste de sorte que la liste reste triée dans l'ordre croissant:

let rec addint list i = 
    match list with 
    | [] -> [i] 
    | h :: t -> if i < h then i :: list else h :: addint t i 

Notez que ce code renvoie une nouvelle liste. Il ne modifie pas la liste existante, ce qui est impossible dans OCaml.

Si vous utilisez ce code pour construire une liste à partir de valeurs aléatoires, le temps d'exécution attendu est quadratique dans la longueur finale de la liste. Une meilleure méthode pour les longues listes est de construire la liste dans le désordre, puis de la trier à la fin. Si votre problème est avec la lecture d'un automate, cela ressemble à du code velu, mais la plupart du temps, cela semble très difficile pour la personne d'entrer sans erreur. Je ne vois aucun code dans votre pastebin pour lire les valeurs d'un utilisateur. Donc, je vais supposer que votre problème est ailleurs.

Il est préférable de réduire votre problème à quelques lignes et de les inclure ici sur SO. Je pense que vous obtiendrez de meilleures réponses de cette façon.

+0

mon problème est en fait la lecture des valeurs de l'utilisateur je veux pouvoir obtenir des automates de l'utilisateur –

+0

Vous obtiendrez de meilleures réponses si vous faites le problème très petit et inclure le code ici sur SO, avec une explication de pourquoi ne semble pas fonctionner. Sinon, vous demandez à quelqu'un de simplement écrire votre code pour vous. –