Se connecter avec
S'enregistrer | Connectez-vous

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

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte
Expert Programmation

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
Expert Programmation

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

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+
Expert Programmation

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

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 ?

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+
Expert Programmation

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]

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 ?

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+
Expert Programmation

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
Expert Programmation

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.
Expert Programmation

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 +

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+
Expert Programmation

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.
Expert Programmation

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.

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 - 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+
Lassé par la pub ? Créez un compte
  • Contenus similaires :
Tags :
Tom's guide dans le monde