Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1406 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  [Algo/Ada] Itération et modulo.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Algo/Ada] Itération et modulo.

n°2160642
Profil sup​primé
Posté le 18-10-2012 à 13:41:37  answer
 

Bonjour,
J'avais ce code : http://jovalise.net/sources/alchem [...] oducer.adb
Pour corriger mon problème j'ai délcaré un nouveau type Extended_Step_Index_Type dérivé de Step_Index_Type comprenant zéro, et j'ai modifier l'ago comme suit : http://jovalise.net/sources/alchem [...] ducer2.adb
Je voudrais savoir si il n'y aurait pas une solution pour m'éviter de déclarer ce nouveau type.
 
Les problème sous jacent de la première version sont, selon l'ordre d'exécution testé, une incrémentation de "part" avant la fin ou au début de celle-ci.
Donc, soit il manque la ou les première notes, soit il manque les dernière.
 
 
Les soures complète  : ici
 
Je vous met un peut de code pour faire joli.
 
 
Previsious code :

Code :
  1. --
  2.            or
  3.            delay until Start_Time;
  4.            Start_Time := Start_Time + Quantum;
  5.            Clear(The_Vector);
  6.           
  7.           
  8.           
  9.            The_Vector := Step_Of(Parts(The_Part).all, Current_Step);          
  10.           
  11.            Sheduler_Process.Receive(The_Vector, Current_step);                     
  12.                      
  13.            if Current_Step + 1 > Step_Index_Type'Last then
  14.           Current_Step := 1;
  15.            else
  16.           Current_Step := Current_Step + 1;
  17.           
  18.            end if;                     
  19.           
  20.            if (Current_Step mod 32) = 0 then
  21.           The_Part := Wrap_Succ(The_Part);
  22.            end if;
  23.           
  24.         end select;


Current code :

Code :
  1. --
  2.         or
  3.            delay until Start_Time;
  4.            Start_Time := Start_Time + Quantum;
  5.            Clear(The_Vector);
  6.           
  7.            Current_Step := Current_Step + 1;
  8.           
  9.            if (Current_Step mod 32) = 0 then
  10.              The_Part := Wrap_Succ(The_Part);
  11.            end if;
  12.           
  13.                      
  14.            The_Vector := Step_Of(Parts(The_Part).all, Current_Step);          
  15.           
  16.            Sheduler_Process.Receive(The_Vector, Current_step);                                                                            
  17.           
  18.           
  19.            if Current_Step + 1 > Step_Index_Type'Last then
  20.           Current_Step := 0;                    
  21.            end if;                                           
  22.  
  23.           
  24.           
  25.         end select;


 
Si vous avez du temps, s'il vous plaît ! Merci.

mood
Publicité
Posté le 18-10-2012 à 13:41:37  profilanswer
 

n°2160646
Profil sup​primé
Posté le 18-10-2012 à 14:04:55  answer
 

Ah, mais en plus ça résoud pas mon problème.
J'arrive pas a suivre ce que j'ai écrit. :/

n°2160673
Profil sup​primé
Posté le 18-10-2012 à 16:42:31  answer
 

Un code qui marche, a priori celui qui va de soit. Je ne sais pas pourquoi ni comment je me suis mis à chercher ailleurs. :(  
 
 

Code :
  1. --
  2.            or
  3.            delay until Start_Time;
  4.            Start_Time := Start_Time + Quantum;
  5.            Clear(The_Vector);
  6.           
  7.            if (Current_Step mod Parts(The_Part).all'length) = 0 then
  8.              The_Part := Wrap_Succ(The_Part);
  9.            end if;
  10.           
  11.            The_Vector := Step_Of(Parts(The_Part).all, Current_Step);          
  12.           
  13.            Sheduler_Process.Receive(The_Vector, Current_Step);                                                                                       
  14.           
  15.            if Current_Step + 1 > Step_Index_Type'Last then
  16.           Current_Step := 1;                    
  17.            else
  18.           Current_Step := Current_Step + 1;
  19.            end if;                                                                 
  20.           
  21.         end select;


 
J'ai remplacé le litéral "32" par la variable ad'hoc, mais 'était pas ça je pense bref, mon problème semble résolu.
Je vais poursuivre les tests. Merci


Message édité par Profil supprimé le 18-10-2012 à 16:43:10
n°2160678
Profil sup​primé
Posté le 18-10-2012 à 17:01:36  answer
 

Ben non enfait, ça marche toujour pas, je saute encore quelque chose.
Alors, je connais une soluce mais attention ça tache....
 
je peut déclarer une variable entre 1 et Parts(The_Part).all'length qui va suivre le (step_index mod (Parts(The_Part).all'length) et incrémenté The_Part quand la variable atteind Parts(The_Part).all'length. Ah, enfin, je crois.
 
Mais donc, ça tache un peut. Une soluce de votre côté ?
 
 
 

n°2160681
Profil sup​primé
Posté le 18-10-2012 à 17:43:44  answer
 

Arf même avec ça, j'y arrive pas.
 
Bravo à celui qui trouve. Genre, une bise de jovalise.  [:jovalise:1]


Message édité par Profil supprimé le 18-10-2012 à 17:44:07
n°2160686
Profil sup​primé
Posté le 18-10-2012 à 18:57:20  answer
 

Alors ... J'ai trouvé... Il y a l'ordre des start dans le main.
Mais aussi la fonction Step_Of à réviser pour renvoyer la bonne valeur lorsque step mod step_seq'length = 0.
Et j'ai simplement copier le test dans l'entré initialize dans le or delay de mon select.
 
Merci pour votre patience...

n°2160693
Profil sup​primé
Posté le 18-10-2012 à 19:22:27  answer
 

Rho ! Ca coupe encore à la première rotation de step_index. Et c'est aléatoire parceque j'ai test et ça passait.
 
Bref.... Désolé.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  [Algo/Ada] Itération et modulo.

 

Sujets relatifs
[Ada] Multiple with clause.[C/Ada] Traduction de C avec Ada de la bibliothèque portmidi.
Python numpy ecriture résultat avec itérationTraduction du C vers Ada
[Ada] Cookie manquant ou videalgo calcul de volume objet 3d
conseil algo pour un projetProblème Run-time library configuration error sous GNAT GPS Ada
Plus de 500 exemples de code Ada disponibles sur RosettaExcel - Algo/prog pour résoudre une équation
Plus de sujets relatifs à : [Algo/Ada] Itération et modulo.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR