Bonjour,
Je voudrais créer un solver de sudoku mais j'ai un petit soucis avec les enregistrements que je n'ai pas encore vu en cours. C'est pour cela que je demande votre aide.
Tout d'abord je crée deux tableaux:
Et ensuite l'enregistrement qui représente la frontière du sudoku :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TYPE Tplateau IS ARRAY (1..9,1..9) of integer;-- plateau du sudoku TYPE TTabPlateau IS ARRAY (1..2000) OF Tplateau;
Mon problème est que je dois créer une procédure avec: FR {D/R} : TFrontiere; P {D} TPlateau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TYPE TFrontiere IS RECORD T : TTabplateau; Last : Integer; END RECORD;
--prerequis : Fr non vide
-- action : retourne dans P le dernier Plateau ajouté à Fr et met a jour Fr
Ce qui donne
Voici la procédure Affiche qui doit ajouter P à F
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 PROCEDURE Pop ( Fr : IN OUT TFrontiere; P : OUT TPlateau) IS -- utilisation de la fonction vide qui retourne vrai si Fr est vide frvide:Boolean; BEGIN frvide:=Vide(Fr); IF frvide=false THEN:=Fr.T P:=Fr.T(last); Fr.Last:=Fr.Last+1; Ajoute(Fr,P); end if; END Pop;
Je n'ai aucune erreur lors de la compilation mais je ne suis pas sur de la validité de ma procédure, de plus je n'arrive pas à afficher tout les plateaux car j'obtient une grosse erreur lors de la compilation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 PROCEDURE Ajoute (Fr : IN OUT TFrontiere; P : IN TPlateau ) IS BEGIN fr.T(fr.last):=p; END Ajoute;
Merci d'avance pour votre aide
Partager