Votre question

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

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
23 Janvier 2006 13:13:44

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
@+

Autres pages sur : bat batch dire variable superieur

a b L Programmation
23 Janvier 2006 20:52:47

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
23 Janvier 2006 21:02:24

TODO list :
- faire un langage permettant de fixer des valeurs limite
Contenus similaires
24 Janvier 2006 18:31:36

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 ???
a b L Programmation
24 Janvier 2006 19:11:49

un exemple qui marche:
  1. set VAR=3
  2. if %VAR% LSS 4 echo toto1
  3. if %VAR% LSS 2 echo toto2
24 Janvier 2006 20:47:55

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+
a b L Programmation
24 Janvier 2006 21:51:28

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

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

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+
25 Janvier 2006 14:39:14

pour l'addition, tu peux faire simplement un OU logique
par exemple 11010 OU 01100 = 11110
a b L Programmation
25 Janvier 2006 19:37:15

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
25 Janvier 2006 19:51:06

Citation :

CRicky a écrit :
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


ben non, il addtionne un à un
  1. 01
  2. +01
  3.  
  4. =02
  5. =01


au fait, comment tu fais pour trouver 10 ?
a b L Programmation
25 Janvier 2006 22:41:30

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

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

25 Janvier 2006 23:16:16

j'ai pas du tout compris ca comme ca :-?
a b L Programmation
26 Janvier 2006 19:06:59

Je sais pas. Ce que tu dis est peut-être ce que veut Mortal_Sniper mais bon, c'est bizarre lol
26 Janvier 2006 20:55:02

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+
26 Janvier 2006 21:14:40

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
26 Janvier 2006 21:24:05

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
26 Janvier 2006 21:24:44

Cricky (apparement le seul a pouvoir m'aider) HELP !!! mdr lol :-D
a b L Programmation
27 Janvier 2006 00:32:36

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]
27 Janvier 2006 10:44:08

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 ?
27 Janvier 2006 12:38:54

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+
a b L Programmation
27 Janvier 2006 18:11:38

Comme le dit rizle tu peux utiliser le '|' pour le OU et '&' pour le ET:
  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
27 Janvier 2006 22:19:01

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 ???
28 Janvier 2006 10:41:45

Ya pas de nouvelles idees ??? lol
a b L Programmation
28 Janvier 2006 11:42:22

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:
  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.
28 Janvier 2006 18:14:31

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

a+
28 Janvier 2006 18:17:26

Pour les | ca marche parfaitement merci mais comment faire pour que si l'utilisateur tape + il le transforme en | ??
29 Janvier 2006 11:26:47

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

a+
a b L Programmation
29 Janvier 2006 13:15:10

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 +
29 Janvier 2006 13:53:26

ok ok je vais tester ca mais je suis pas sur d'avoir tout bien compri lol
29 Janvier 2006 13:59:59

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+
a b L Programmation
29 Janvier 2006 16:42:35

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.
29 Janvier 2006 17:06:34

Citation :

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

t'as essayé ? :biggrin:
29 Janvier 2006 20:29:58

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

a+
a b L Programmation
29 Janvier 2006 20:50:37

Ben je peux pas t'expliquer si tu ne me dis pas ce qui ne marche pas.
30 Janvier 2006 01:47:13

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é!
30 Janvier 2006 09:43:31

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
a b L Programmation
30 Janvier 2006 19:40:50

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:
  1. echo %VAR% > resultat.txt

pour afficher "2+3" dans le fichier resultat.txt, que tu analyse après.
30 Janvier 2006 21:08:09

Ok je vais essayer ca je te tien au courant merci
31 Janvier 2006 21:47:27

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
+
1 Février 2006 10:35:16

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 ?
1 Février 2006 20:40:36

CRicky j'arrive pas a faire marcher ton truc avec resultats.txt qu'est-ce que je dois mettre?
a b L Programmation
1 Février 2006 22:08:27

  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
2 Février 2006 15:22:26

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+
a b L Programmation
2 Février 2006 19:18:36

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.
2 Février 2006 21:39:47

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+
a b L Programmation
3 Février 2006 00:38:22

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.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS