Réinitialiser un compteur en ADA

Discutez d'informatique ici !
Avatar de l’utilisateur
Rockleader
Vétéran
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 28 Sep 2012, 14:09

fatal_error a écrit:que font tes primitives BAISSER, AVANCER, RECULER, etc?



Baisser c'est aller de une unité vers le bas

Pour le reste c'est pareil mais dans les direction voulu..à savoir avancer c'est vers la droite, reculer vers la gauche...




Il y a un autre moyen que j'aurais pu utiliser: DEPLACER qui permet d'aller dans la direction du pointeur, ainsi que pivoter qui permet de tourner de 90 degré dans le sens horraire.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !



Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 5728
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 28 Sep 2012, 14:33

ok en fait baisser jpresume que cest poser le style sur la feuille et lever le relever...
->avancer
<-reculer
^ monter
v descendre

genre ca
Code: Tout sélectionner
 procedure carre_imbriques is
   moved : integer := 0;
   nbCarres : integer := 0;
   borderSize: integer := 0;
   --utilisation du compteur4 pour réinitialiser les 3 compteurs.
begin
   While nbCarres /= 4 loop
      LEVER;
      CENTRER;
      nbCarres := nbCarres + 1;
      CENTRER;
      borderSize := 2*nbCarres
     
      --positionne le stylet au milieu du cote droit
      moved := 0;
      While moved /= borderSize/2 loop
        AVANCER;
        moved := moved + 1;
      end loop;
      BAISSER;
     
      --trace jusqu au coin bas droit
      moved := 0;
      While moved /= borderSize/2 loop
        DESCENDRE;
        moved := moved + 1;
      end loop;
     
      --trace jusqu au coin bas gauche
      moved := 0;
      While moved /= borderSize loop
        RECULER;
        moved := moved + 1;
      end loop;
     
      --trace jusqu au coin haut gauche
      moved := 0;
      While moved /= borderSize loop
        MONTER;
        moved := moved + 1;
      end loop;
     
      --trace jusqu au coin haut droit
      moved := 0;
      While moved /= borderSize loop
        AVANCER;
        moved := moved + 1;
      end loop;
     
      --trace jusqu au milieu cote droit
      moved := 0;
      While moved /= borderSize/2 loop
        DESCENDRE;
        moved := moved + 1;
      end loop;
   
     
   end loop;


note: jai pas compile, cest juste pour lidee de gerer plus de 4 carres...

ps2: au moins une amelioration est possible :lol3:
la vie est une fête :)

Avatar de l’utilisateur
Rockleader
Vétéran
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 28 Sep 2012, 15:22

Oups pardon je m'étais embrouiller entre baisser et descendre, mais oui tu as compris à quoi ça servait --' désolé.



Bon, je vais regarder ça attentivement, mais là j'ai un autre soucis.

Je suis sur mon tp suivant, bon, mon code n'est peut être pas encore bon, mais j'ai un soucis au moment de compiler...et je ne comprend pas l'erreur !

Code: Tout sélectionner
gnatmake -ws -c -u -PC:\Users\Desktop\Documents\ADA\TP\Semaine_2\Tp_3\robotEtudiants\tp_3.gpr erobot.adb
gnatmake: objects up to date.

[2012-09-28 15:17:01] process terminated successfully (elapsed time: 01.20s)




A priori là tout se passe bien, le soucis arrive après

Code: Tout sélectionner
gnatmake -d -PC:\Users\Desktop\Documents\ADA\TP\Semaine_2\Tp_3\robotEtudiants\tp_3.gpr erobot.adb
gnatbind -I- -x C:\Users\Desktop\Documents\ADA\TP\Semaine_2\Tp_3\robotEtudiants\erobot.ali
gnatlink C:\Users\Desktop\Documents\ADA\TP\Semaine_2\Tp_3\robotEtudiants\erobot.ali -o C:\Users\Desktop\Documents\ADA\TP\Semaine_2\Tp_3\robotEtudiants\erobot.exe
c:/gnat/2012/bin/../libexec/gcc/i686-pc-mingw32/4.5.4/ld.exe: cannot open output file C:\Users\Desktop\Documents\ADA\TP\Semaine_2\Tp_3\robotEtudiants\erobot.exe: Permission denied
collect2: ld returned 1 exit status
gnatlink: error when calling C:\GNAT\2012\bin\gcc.exe
gnatmake: *** link failed.

[2012-09-28 15:18:19] process exited with status 4 (elapsed time: 05.87s)



Voilà, je ne comprends pas ce qui bloque le compilateur, puisque à priori la première partie me dis que le code est bon...ou du moins qu'il est exécutable par ada....


SI vous y comprenez quelque chose...par ailleurs si je recompile un de mes programmes de la semaine dernière ça passe très bien, allez comprendre pourquoi, à croire que c'est le code qui déconne et pourtant....


Je précise que au moment de la compilation gnat crée automatiquement un fichier exécutable si j'ai bien compris.

[EDIT] J'utilise le traitement de texte GPS avec le compilateur Gnat.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

C.Ret
Membre Relatif
Messages: 497
Enregistré le: 02 Juil 2012, 13:33

par C.Ret » 28 Sep 2012, 16:08

Erreur de droits d'accès: le compilateur ne peux pas écrire dans le fichier (ou le répertoire) suivant:
"C:\Users\Desktop\Documents\ADA\TP\Semaine_2\Tp_3\r"
ce qui crée une erreur type "Permission denied"


Vérifier les attributions des sous-répertoires utilisés, ou vérifier que le compilateur/linker est bien configuré avec les sous-répertoires de travail ad'hoc (c'est à dire ceux authorisés par l'utilisateur obotEtudiants\erobot.exe)

Avatar de l’utilisateur
Rockleader
Vétéran
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 28 Sep 2012, 17:13

oui c'est bien ce qu'il m'avait semblé comprendre, mais j'ai pourtant bien les droits d'accès à mon dossier...

Je vais tenter d'enlever tout les fichier source et de remettre par dessus...


EDIT: J'ai fini par résoudre le problème de mon compilateur.

Maintenant je galère avec mon code une fois sur vingt je fais une boucle infini qui fait planter mon exe --'
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
Rockleader
Vétéran
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 29 Sep 2012, 14:15

Bonjour, bonsoir, je viens vous voir avec un nouveau problème.


Je dois corriger le programme suivant pour qu'il trace 5 carré imbriqué.
Il n'y a pas d'erreur dans le code dans le sens où ça compile bien, mais le résultat n'est pas celui voulu, évidemment sinon il n'y aurait rien à corriger...


Bon voilà un peu bête sachant que j'ai déjà réalisé ce programme de bloquer là dessus, mais je vois pas comment obtenir la même chose à partir de ce programme ci à modifier =)


(Ce programme trace des carrés qui se croise mais qui ne sont pas imbriqué..)

Code: Tout sélectionner
with traceur; use traceur;   
procedure exo8 is
begin   
   LEVER;
   CENTRER;
   RAZ1;
   while (compteur1 < 5) loop
      -- monter/avancer de 1
      DEPLACER;
      PIVOTER;
      DEPLACER;
      -- commencer a tracer
      BAISSER;
      -- les 4 cotes
      RAZ2;
      while (compteur2 /=4) loop
         PIVOTER;
         -- de la bonne longueur
         RAZ3;
         while (compteur3 < (2*(compteur1+1))) loop
            DEPLACER;
            INCREMENTER3;
         end loop;
         INCREMENTER2;
      end loop;
      LEVER;
      PIVOTER;
      PIVOTER;
      INCREMENTER1;
   end loop;         
   DESSINER;   
   end exo8;
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Kaza
Messages: 3
Enregistré le: 27 Sep 2012, 19:51

par Kaza » 29 Sep 2012, 15:45

Salut, alors pour les carrés imbriqués merci, mais seul problème c'est que ton programme n'est pas du tout compacte, je pense que tu pourrais en faire un grâce à trois compteurs permettant de déboucher dans 3 boucles successives.
Sinon pour ton dernier exo là ou il faut corriger, il manque simplement un pivoter à la fin du programme:
with traceur; use traceur;
procedure exo8 is
begin
LEVER;
CENTRER;
RAZ1;
while (compteur1 < 5) loop
-- monter/avancer de 1
DEPLACER;
PIVOTER;
DEPLACER;
-- commencer a tracer
BAISSER;
-- les 4 cotes
RAZ2;
while (compteur2 /=4) loop
PIVOTER;
-- de la bonne longueur
RAZ3;
while (compteur3 < (2*(compteur1+1))) loop
DEPLACER;
INCREMENTER3;
end loop;
INCREMENTER2;
end loop;
LEVER;
PIVOTER;
[B][U]PIVOTER
PIVOTER;
INCREMENTER1;
end loop;
DESSINER;
end exo8;

Voilà ^o^, dis moi si sa marche.

Avatar de l’utilisateur
Rockleader
Vétéran
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 29 Sep 2012, 15:54

Super c'était ça merci !


En fait c'était tout simple, mais comme je venais d'en faire 7 avant, je devais pas avoir l'esprit très clair =) Ou alors j'ai été effrayé en regardant la tête des carrés tracé avant même de regarder le code --'


Bon tout ça pour dire merci, j'aurais pas du poser la question tellement c'était facile :hum:
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite