Tom's Guide > Forum > Programmation > [bat][batch] Comment dire a une variable quelle ne doit pa etre superieur a 1 ?

[bat][batch] Comment dire a une variable quelle ne doit pa etre superieur a 1 ?

Forum Programmation : [bat][batch] Comment dire a une variable quelle ne doit pa etre superieur a 1 ?

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,
Voila ba tout est dans le titre je voudrait savoir comment dire a une variable quelle ne doit pa etre superieur a 1.


Merci d'avance
@+

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Tu peux faire un IF avec ce qui va bien comme test:

Citation :

EQU - égal à
NEQ - différent de
LSS - inférieur à
LEQ - inférieur ou égal à
GTR - supérieur à
GEQ - supérieur ou égal à


exemple: IF %VAR1% LSS %VAR2% echo %VAR1% est petit

Répondre à CRicky

TODO list :
- faire un langage permettant de fixer des valeurs limite

Répondre à ritzle

Merci de ton infos Criky mais ...

ya un bug lol i lme dit : " '0' n'est pas reconnu en tant que commande interne ou externe, un programme executable ou un fichier de commandes"

Que faire ???

Répondre à Mortal_Sniper

un exemple qui marche:

Code :
  1. set VAR=3
  2. if %VAR% LSS 4 echo toto1
  3. if %VAR% LSS 2 echo toto2

Répondre à CRicky

Ok mais est-ce possible que a la place de echo je puisse changer la valeur de la variable en question parceke c ca ke je ve faire :
Si la variable %res1% est superieur a 1 je veux quelle soit egale a un.
Et c la que vien le probleme :-(

Voila a+

Répondre à Mortal_Sniper

Il faut mettre un /P à set pour poser la question. Fait HELP SET pour plus de détails.

Bon un exemple:

Code :
  1. REM GPL License
  2. @echo off
  3. cls
  4. set /A val=%RANDOM% / 3277
  5. set /A nbEssais=3
  6. echo Devinez un nombre compris entre 0 et 10
  7. echo ---------------------------------------
  8. :debut
  9. set /P n=Votre nombre :
  10. set /A nbEssais-=1
  11. if %n%==%val% goto finGagne
  12. if %nbEssais%==0 goto finPerdu
  13. echo ----- Perdu. Nouvel essai
  14. goto debut
  15. :finGagne
  16. echo Bravo ! Vous avez gagné
  17. goto fin
  18. :finPerdu
  19. echo Perdu ! Il fallait trouver %val%
  20. goto fin
  21. :fin
  22. echo ╔═══════════════════╗
  23. echo ║ The CRicky's game ║
  24. echo ╚═══════════════════╝
  25. pause
  26. cls

Répondre à CRicky

Dsl mais ...
ca repond pas a ma question lol
j'ai pas de prob pour la question.
je vais te donner mon probleme:

alors en fait mon bat va aditionner ou multiplier des 1 et des 0. Mais quand il additionne il va faire 1+1 =2 (ce qui est logique) et il doit afficher le resultat. Mais si ce resultat est superieur a 1 (2 par exemple) je veux qu'il marque 1.
Voila a+

Répondre à Mortal_Sniper

pour l'addition, tu peux faire simplement un OU logique
par exemple 11010 OU 01100 = 11110

Répondre à ritzle

Citation :


ritzle a écrit :
pour l'addition, tu peux faire simplement un OU logique
par exemple 11010 OU 01100 = 11110


C'est faux. ça ne marche que s'il n'y a jamais 2 bits à la même position à 1. car 01 + 01 = 10 et 01 OR 01 = 01

Dans l'exemple je t'ai donné ce qu'il fallait pour que tu puisse le faire. c'est-à-dire:
- le /P dans le set pour effectuer les calculs
Le "set /A nbEssais-=1" étant équivalent à "set /A nbEssais=nbEssais-1"
- le IF qui teste une valeur numérique

Répondre à CRicky

Citation :


CRicky a écrit :
[quote]
ritzle a écrit :
pour l'addition, tu peux faire simplement un OU logique
par exemple 11010 OU 01100 = 11110


C'est faux. ça ne marche que s'il n'y a jamais 2 bits à la même position à 1. car 01 + 01 = 10 et 01 OR 01 = 01

[/quote]
ben non, il addtionne un à un

Code :
  1. 01
  2. +01
  3. =02
  4. =01



au fait, comment tu fais pour trouver 10 ?

Répondre à ritzle

Ben c'est simple, il y a la retenue quand tu ajoutes:

0=0000b
1=0001b
2=0010b
3=0011b
4=0100b
...
15=1111b

Répondre à CRicky

j'ai pas du tout compris ca comme ca :-?

Répondre à ritzle

Je sais pas. Ce que tu dis est peut-être ce que veut Mortal_Sniper mais bon, c'est bizarre lol

Répondre à CRicky

BOn j'explike tout lol :
je sais pas si certain d'entre vous connaisse les table de verite en electronique mais si il connaisse ca va aider ^^.
Le truc c ke a un moment donner de mon bat il devra calculer en binaire : 1+1=1 (et il met 2 ce ki est logik)
eh ba nn ^^ en binaire c pas bon lol je veux ke si il trouve 2 il mette 1 ou si il trouve 3 kil mettte 1 ossi.
Mais si c possible de lui dire directement o debut kil fo calculer en binaire je pense con gagnera du temp ... ;-)

Sinon pour info voila une table de verite don l'equation est a+b (vrement simple coi):
a b S
0 0 0
0 1 1
1 0 1
1 1 1

Voila .

Une otre question :
Est-il possible de dire o bat de regarder qu'ube lettre de ce ke l'utilisateur a marquer ??

exemple:
set /P test=

Si l'utilisateur met az, je ve ke le bat regarde si ya marker z ou pas.

Voila tout
a+

Répondre à Mortal_Sniper

c'estc e que je disais, le OU c'est l'addition et le ET c'est la multiplication

a+b => a OU b
a.b => a ET b

Répondre à ritzle

Tu sais je fait de l'electronique donc tu vas pas m'apprendre les portes lgique ...
lol

Mais c'est bien de preciser mais sa repon pas a ma question lol

Répondre à Mortal_Sniper

Cricky (apparement le seul a pouvoir m'aider) HELP !!! mdr lol :-D

Répondre à Mortal_Sniper

Citation :


ritzle a écrit :
c'estc e que je disais, le OU c'est l'addition et le ET c'est la multiplication

a+b => a OU b
a.b => a ET b


Ok, désolé j'avais oublié cette notation, je suis trop habitué au "|" pour le OU ;-)

sinon ton truc:
[code]
set /P a=entrez la valeur de a (0 ou 1):
set /P b=entrez la valeur de b (0 ou 1):
set /A S=0
if %a%==1 set /A S=1
if %b%==1 set /A S=1
echo Resultat: S=%S%
[code]

Répondre à CRicky

Citation :


Mortal_Sniper a écrit :
Tu sais je fait de l'electronique donc tu vas pas m'apprendre les portes lgique ...


je suis certain que tu es meilleur que moi dans ce domaine, mais je le disais à CRicky. Tu ne peux vraiment pas utiliser des & ou | en batch ?

Répondre à ritzle

Citation :


CRicky a dit:
sinon ton truc:
[code]
set /P a=entrez la valeur de a (0 ou 1):
set /P b=entrez la valeur de b (0 ou 1):
set /A S=0
if %a%==1 set /A S=1
if %b%==1 set /A S=1
echo Resultat: S=%S%
[code]



Ce ne m'aide pas pour ce que je veux faire lol
Ce que l'utilisteur rentre c'est une equation de kla forme a+b par exemple mais ne doit pas rentrer de 0 ni de 1. C'est le bat ki va calculer ca avec la table de verité.
Voila donc si on resume j'ai deux probleme :
1 - Comment faire pour ke 1+1=1
2 - Un bat peut il prendre en compte la deuxieme lettre de ce ki a ete ecrit ?

Voila a+

Répondre à Mortal_Sniper

Comme le dit rizle tu peux utiliser le '|' pour le OU et '&' pour le ET:

Code :
  1. set /A S="1|1"
  2. set /A S="1|0"
  3. set /A S="1|0"
  4. set /A S="0|0"


bon si tu veux transforemer le '+' en '|', c'est complexe je pense (écrire dans un fichier, utiliser un FOR /F "delims=+" et remplacer le caractère par '|' pour évaluer le résultat

Répondre à CRicky

Euh le | marche pas vraiment, il se ferme tout seul !!

Bon la je commence a croire kil n'y a pas de solution lol.

Sinon pour ma deuxieme question vous avez une solution ???

Répondre à Mortal_Sniper

Ya pas de nouvelles idees ??? lol

Répondre à Mortal_Sniper

si le | marche, il faut mettre toute l'expression entre guillemets comme je l'ai fait dans l'exemple.
sinon tu peux aussi évaluer 1+1 et si c'est >1 tu remplaces par 1.
pour la 2ème question, je ne voit que l'utilisation d'une redirection dans un fichier, puis sa lecture:

Code :
  1. FOR /F "tokens=1,2* delims=+ " %%i in (resultat.txt) do (
  2. echo première partie: %%i
  3. echo opérateur: %%j
  4. echo deuxième partie: %%k
  5. )


Voilà, là tu as tout pour faire ce que tu veux je pense.

Répondre à CRicky

Je ne comprend pas tres bien ce que tu as mis dans ton code tu pourais me l'e'xpliquer ??

a+

Répondre à Mortal_Sniper

Pour les | ca marche parfaitement merci mais comment faire pour que si l'utilisateur tape + il le transforme en | ??

Répondre à Mortal_Sniper

Ok ok et pour l'autre probleme ta une solution ??? (si un gars tape + ca se transforme en | )

a+

Répondre à Mortal_Sniper

Ben le for c''est justement pour ça.
Exemple: tu redirige "a+b" dans un fichier.
Tu lis ce fichier avec le for que j'ai indiqué précédement, et tu crée une nouvelle variable set VAR=%%i+%%k puisque %%j est le | => ça remplace le | par +

Répondre à CRicky

ok ok je vais tester ca mais je suis pas sur d'avoir tout bien compri lol

Répondre à Mortal_Sniper

Bon j'ai tester mais ...
ca marche pas lol
en fait je pense que j'ai pas bien fait comme il faut :-)
Tu pourrais m'ecrire le code final et aussi l'explication lol (je sais je suis chiant mais la je desespere y arriver, j'ai vraiment l'impression d'etre nul mdr)

Bon merci d'avance
a+

Répondre à Mortal_Sniper

Citation :


Mortal_Sniper a écrit :
Tu pourrais m'ecrire le code final et aussi l'explication


Non, je ne vais pas faire ton programme.
D'ailleurs je doute que tu ais vraiment testé, car la réponse "ça marche pas", ben avec moi, ça marche pas.

Répondre à CRicky

Citation :


CRicky a écrit :
... car la réponse "ça marche pas", ben avec moi, ça marche pas.


t'as essayé ? :biggrin:

Répondre à ritzle

bon ok ne m'ecrit rien mais explique au moin parceque chez moi ca marche pas.

a+

Répondre à Mortal_Sniper

Ben je peux pas t'expliquer si tu ne me dis pas ce qui ne marche pas.

Répondre à CRicky

Je trouve que c'est vraiment beaucoup de taf pour pas grand chose pk le fait tu en batch en assembleur déja ca aurais déja été plus simple et en c une promenade de santé!

Répondre à showie

Je le fait en bat tout simplement parceque j'avais envie de le faire comme ca lol
Pour le probleme :
il me dit que le fichier resultat n'existe pas donc j'ai creer un fichier texte qui s'appelle resultat mais il ne fait rien en fait lol
Donc voila

Répondre à Mortal_Sniper

bien sûr resultat.txt n'est qu'un fichier temporaire où à l'intérieur tu mets ce qu'entre l'utilisateur:
si tu as "2+3" dans une variable VAR, tu fais:

Code :
  1. echo %VAR% > resultat.txt


pour afficher "2+3" dans le fichier resultat.txt, que tu analyse après.

Répondre à CRicky

Ok je vais essayer ca je te tien au courant merci

Répondre à Mortal_Sniper

je sais qu'il y a une solution simple avec le language des calcuelette(j'avai faitt des jeux de hasard avec) et sa doit pas etre different pour les language informatique
je croi que si ta le bouqin de ta calculette(scientifique) c'est au chapitre probabilité ou un truck en rapport avec l'eventualité
voila sinon j'ai pas eu le temps de lire les reponses des autres personne et peu etre qu'ils ont une meilleure solution
+

Répondre à teambug

Dsl mais j'ai pas tres bien compris ton truc la lol

Sinon ya pas une technique pour dire directement au pc que l'on calcule en binaire ?

Répondre à Mortal_Sniper

CRicky j'arrive pas a faire marcher ton truc avec resultats.txt qu'est-ce que je dois mettre?

Répondre à Mortal_Sniper

Code :
  1. echo %VAR% > resultat.txt


cette ligne éxrit le contenu d'une variable dans un fichier.
si VAR contient 3+2, ça écrit 3+2 dans le fichier resultat.txt

Répondre à CRicky

D'accord mais alor la je ne comprend pas a quoi ca me sert le resultat.txt

C'est peut etre une question debile mais je comprend pas.

Merci de me dire ce que je dois mettre dans mon code pouir mon cas avec une explication stp

merci
A+

Répondre à Mortal_Sniper

Le fichier permet d'analyser le contenu grace au FOR /F qui ne marche que sur un contenu de fichier et pas un contenu de variable.

Répondre à CRicky

1 - D'accord mais est-ce que je dois mettre quelquechose dans le fichier resultats.txt ??

2 - A quoi sert cette fonction :
"tokens=1,2* delims=+ " %%i in (resultat.txt) do (

3 - Dans :
echo première partie: %%i
echo opérateur: %%j
echo deuxième partie: %%k
Su'est-ce que c'est ca : %%i , %%j , %%k ???

A+

Répondre à Mortal_Sniper

1. le contenu d'une variable

2. à lire les lignes d'un fichier et à découper la ligne en variables %%i %%j %%k
ici tu découpes en parties délimitées par le caractère +

3. voir 2.

Répondre à CRicky
Tom's Guide > Forum > Programmation > [bat][batch] Comment dire a une variable quelle ne doit pa etre superieur a 1 ?
Aller à :

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

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens