FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  [PROJET] création d'un script windows

 




Il y a 37 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PROJET] création d'un script windows

n°4266
cybersplas​h
Laissez moi chanter !!!
Posté le 21-10-2004 à 12:29:05  profilanswer
 

Bonjour a tous
 
Je suis en premiere année de DUT info et on nous propoe de faire un script pour windows [:azerty29] linux c'est que pour le prochain semestre :(
 
Donc le but de ce script est d'ameliorer la commande SET /A
 
Donc il faut que l'on puisse faire des calculs d'entier *,/,-,+,%
sur 32bits 48 bits 64 bits 128 bits enfin 48 bits minimum
 
Donc deux objectif etendre le format des nombres et second objectif controler le resultat
 
Donc il faut trouver un systeme de controle des valeurs avant meme de faire le calcul sinon aucun interet le calcul sera toujours inferieur à 2^31-1 ou superieur à -2^31
 
Voila quelques exemples d'execution du script
>Z + -234 567          renvoie la valeur de la somme de -234 et 567
>Z - 78 1456897        effectu la soustraction 78-1456897
>Z * 11998 1456897     c'est la multiplication
>Z /A 123465468765     ca c'est la verification du format du nombre savoir si il est sur 32 48 64 ou 128 bits
 
Si l'on n'effectue aucune commande avant l'execution du script il doit effectuer le calcul sur 32bits
 
Par contre si la commande >SET INT48=1 est effectué avant lappel du script le script doit faire tous les calcul sur 48 bits
 
Voila un resumer de ce que doit faire le script biensur je ne vous demande pas de faire le script ni même de me donner des morceaux de code mais juste des indications concernant l'algorithme a utiliser ou des astuces pour alleger le script
 
Enfin tous ce qui peut m'aider a créer un très bon script en un minimum de temps :)
 
Le temps compte enormement seul les 5 premiers auront des points les autres rien :(
 
Donc je concidere avoir un peu plus d'une semaine pour la conception de ce script les tests et l'envoie du resultat final :)
 
Les points les plus important sur lesquel je but (faut dire aussi que ca fait 1h qu'on a le sujet :) ) c'est l'extension du format j'ai un pe de mal à voir comment augmenter ce format
 
Je vous remercie deja pour tous vos conseil et vos aide

Travail accompli :


Addition

 
si a>=0 et b>=0 et que (a-(2^31-1))+b<=0 alors c'est dans l'interval
si a<0 et b<0 et que (a+(2^31))+b>=0 alors c'est dans l'interval
si les signes sont opposée il faut verifier que a et b appartiennent a l'interval  
 
Soustraction
 
si a>=0 et b>=0 toujours bon si a et b dans l'interval
si a<0 et b<0 toujours vrai si a et b dans l'interval
si a<0 et b>=0 alors on se ramene a l'addition de a<0 et b<0
si a>=0 et b<0 alors on se ramene à l'addition de a>=0 et b>=0
 
Multiplication
 
si a et b de meme signe alors si a/(2^31-1)*b<=1 alors c'est dans l'interval
si a et b sont de signe contraire alors si a/(2^31)*b>=-1 alors c'est dans l'interval  
 
    seconde methode
 
    Une boucle qui additione a tant que b n'est pas nul ou qui s'arrete lorsque la somme est superieur a 2^31-1-a

Division

 
si a et b dans l'interval et b different de 0 alors le resultat se trouve dans l'interval
 
Modulo
 
si a et b sont dans l'interval alors le modulo est dans l'interval


Message édité par cybersplash le 21-10-2004 à 17:10:33
mood
Google
Posté le 21-10-2004 à 12:29:05  profilanswer
 

n°4268
cybersplas​h
Laissez moi chanter !!!
Posté le 21-10-2004 à 15:27:59  profilanswer
 

Donc j'ai un peu bosser dessu meme si j'ai po eu beaucoup de temps
 
Donc je pense avoir une piste au niveau de l'addition pour savoir si la somme de deux nombres sera ou non au format 32 bits ou dans n'importe quel format
 
je vous donne la formule qui a l'air de marcher
 
pour 32 bits
 
a+b dans l'interval [-2^31;2^31-1] si (a-2^31)+b <= 0
Pour les positifs ca marche
mais dès que le premier nombre est negatif ba ca foire :(

n°4269
KnX
To be or not to code.
Posté le 21-10-2004 à 15:40:57  profilanswer
 

C'est a vérifier, c'est juste de la logique a l'arache mais ca me semble logique :
Si les nombres sont de signes différents et rentrent chacun dans les 32 bits, la somme des deux rentrera forcément dans l'intervale ;)
 
Si les nombres sont de même signe ben ... chépas
 
Si le produit de deux nombre rentre dans les 32 bits, alors le produit de l'opposé de l'un avec l'autre ou de l'opposé de l'un avec l'opposé de l'autre rentrera aussi.


Message édité par KnX le 21-10-2004 à 15:41:59

---------------
/!\ KnX's bash NP : Norah Jones - Don't Miss You At All /!\
n°4270
cybersplas​h
Laissez moi chanter !!!
Posté le 21-10-2004 à 15:53:42  profilanswer
 

Donc je vien de mettre au point la version final de l'addition (la solution pour la soustraction doit po etre loin :) )
 
donc voila
 
si a>=0 et b>=0 et que (a-(2^31-1))+b<=0 alors c'est dans l'interval
si a<0 et b<0 et que (a+(2^31))+b>=0 alors c'est dans l'interval
si les signes sont opposée il faut verifier que a et b appartiennent a l'interval
 
Thx KnX mais j'arrive po a bien capter pour la multiplication
 
tu ve dire que si 10*2 rentre dans mon interval alors (-10)*2 ou 10*(-2) ou (-10)*(-2) y rentre aussi ?
 
j'ai oublié une petite question si l'utilisateur rentre comme parametre un chiffre qui ne rentre pas dans 32 bits pour la stocker pas de pb une variable d'environnement la stock mais apres je peut pas faire de test puisque set /a me donnera une valeur a la con non ?
 
 
Bon je savait bien que la soustraction etait pas loin
 
Voila la solution :
 
si a>=0 et b>=0 toujours bon si a et b dans l'interval
si a<0 et b<0 toujours vrai si a et b dans l'interval
si a<0 et b>=0 alors on se ramene a l'addition de a<0 et b<0
si a>=0 et b<0 alors on se ramene à l'addition de a>=0 et b>=0


Message édité par cybersplash le 21-10-2004 à 16:03:26
n°4271
KnX
To be or not to code.
Posté le 21-10-2004 à 16:07:55  profilanswer
 

Oui je voulais dire ca pour la multiplication, y'a juste une petite erreur a corriger, c'est le fait que l'intervale soit plus court de 1 en négatif ( mais c'est franchement pas complexe a résoudre ) :
- on prends les nombre sans signe, on multiplie les deux, si c'est pas dans les 32 bits, on stoppe
- si ca fait 2^32 et que le nombre de signes "-" est impair, on stoppe
- sinon c'est ok et on met un signe - si le nombre de signes "-" est impair


---------------
/!\ KnX's bash NP : Norah Jones - Don't Miss You At All /!\
n°4272
cybersplas​h
Laissez moi chanter !!!
Posté le 21-10-2004 à 16:16:48  profilanswer
 

le pb c kon peu po faire ce calcul pqc le calcul sera toujours inferieur o borne
 
si tu fait if /I ((2^31)-1)+1< (2^31)-1
ce resultat est vrai pour le pc alors que c faut pour nous

n°4273
cybersplas​h
Laissez moi chanter !!!
Posté le 21-10-2004 à 16:19:52  profilanswer
 

donc pour la multiplication j'ai trouver un petit truc mais je suis po super satisfait
 
je le met quand meme si on peut ajouter des modif pour le rendre mieu :)
 
si a et b de meme signe alors si a/(2^31-1)*b<=1 alors c'est dans l'interval
si a et b sont de signe contraire alors si a/(2^31)*b>=-1 alors c'est dans l'interval
 
Par contre KnX si ta des idée pour le modulo ce serai cool pqc je n'ai aucune idée pour trouver si il est dans l'interval ou non sans le calculer ni meme pour le calculer lol :)


Message édité par cybersplash le 21-10-2004 à 16:26:56
n°4274
KnX
To be or not to code.
Posté le 21-10-2004 à 16:42:35  profilanswer
 

bha normalement l'opérateur % marche dans la plupart des languages de prog, et si b est dans l'intervale alors a%b sera forcément dans l'intervale ;) ( c'est une des propriétés du modulo .... )
 
une solution bète et méchante pour la multiplication, c'est d'en faire une suite d'addition, c'est lent mais si ton code d'addition est bon, c'est bon :D


---------------
/!\ KnX's bash NP : Norah Jones - Don't Miss You At All /!\
n°4275
cybersplas​h
Laissez moi chanter !!!
Posté le 21-10-2004 à 16:47:43  profilanswer
 

Thx knx pour le modulo c'est regler et pour la multiplication notre prof aime po trop les methode analytique il prefere le global si on utilise trop de boucle ca le rend fou :) et en plus sous win les boucle c po ce qu'il y a de plus bo a coder :)
 
sinon pour la multiplication si ma methode marche po pour la tienne je fait un boucle tant que et je boucle tant que b est different de 9 ou jusqu'a ce que 2^31-1-a < a ma somme


Message édité par cybersplash le 21-10-2004 à 16:51:52
n°4276
cybersplas​h
Laissez moi chanter !!!
Posté le 21-10-2004 à 17:24:53  profilanswer
 

Pour les formats je penser faire une methode de concatenation
 
je stock dans une variable d'environnement la valeur des parametres ca pas de probleme car c'est une chaine de caractere ensuite je coupe la chaine en 2 avec un ratio de 2/3 1/3 pour le 48 bits 1/2 1/2 pour le 64 1/4 1/4 1/4 1/4 pour le 128 bits
 
faire les calcul independemment avec comme seul lien entre les operations successives une variable R contenant la retenu a ajouter
 
Ca a l'air de marcher pour l'addition et la soustraction encore que le decoupage de ma chaine de caractere ne soit pas tre au point
 
Je c pas comment la decouper pour que la valeur arithmetique de cette chaine soit sur 32 bits reelement

n°4277
KnX
To be or not to code.
Posté le 21-10-2004 à 17:27:31  profilanswer
 

bha dans ce cas la, tu convertis tes nombres en binaires ou hexa et tu implémente les opérations toi même sans dépendre du système, un peu lourd, mais ca devrait bien marcher et même gerer des nombres d'une taille aussi grande que tu veut ;)


---------------
/!\ KnX's bash NP : Norah Jones - Don't Miss You At All /!\
n°4278
cybersplas​h
Laissez moi chanter !!!
Posté le 21-10-2004 à 17:35:58  profilanswer
 

je voi po bien ce que tu ve dire  
 
tu ve que convertisse mes nombres et une fois converti je fasse l'addition ou la multiplication ?
 
y a toujours le pb des 32 bits pqc lutilisateur si il rentre une valeur de plus de 32 bits  j'arrive a le stocker en tant que chaine mais jarrive po a le manipuler

n°4279
KnX
To be or not to code.
Posté le 21-10-2004 à 17:37:05  profilanswer
 

implémente toutes les opérations basiques avec des chaines, c'est lourd mais bon ... c'est ce que je voulais dire ;)
 


---------------
/!\ KnX's bash NP : Norah Jones - Don't Miss You At All /!\
n°4280
cybersplas​h
Laissez moi chanter !!!
Posté le 21-10-2004 à 17:37:57  profilanswer
 

alors la je c pas du tout faire pour implementer des calculs avec des chaines

n°4286
cybersplas​h
Laissez moi chanter !!!
Posté le 23-10-2004 à 13:49:46  profilanswer
 

Re a tous
 
J'ai po pu bosser depui la derniere fois mais le je mis remet et j'arrive pas du tout a faire un depassement de format j'ai vraiment du mal
 
Personne ne connai un algo qui me permet de faire des calculs sur 48 bits ou 64 ?
 
C'est vraiment important :)

mood
Google
Posté le 23-10-2004 à 13:49:46  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  [PROJET] création d'un script windows

 

Hit Parade