Vous n'êtes pas identifié.
Si vous voulez faire des programmes où on doit appuyer sur des touches ( par exemple utiliser tout les chiffres ou toutes les lettres), je vous recommande de procéder comme ce qui suit (afin d'opimiser la vitesse):
Lbl 1 : début de la boucle
0->Z : variable Z à 0
While Z=0
Getkey->Z
WhileEnd : taper sur une touche
Il faut maintenant enlever toutes les valeurs de Z qui ne nous interessent pas, mais on va pas s'amuser à toutes les faire une par une alors on les regroupe
Frac (Z/10) est compris entre 0.1 et 0.9 et représente la ligne de la touche de 1 à 9.
Int (Z/10) est compris entre 2 et 7 et représente la colone de la touche de 2 à 7.
Ainsi pour se servir seulement des touches chiffrés sans le 0 on mettra comme condition:
(Frac (Z/10))>0.4 Or (Frac (Z/10))<0.2 Or (Int (Z/10))<5=>Goto 1
Pour des touches isolées sur la calculatrice, on fera ainsi les plus grand groupes possibles en les regroupant par ligne ou colone et puis on pourra éventuellement mettre d'autres conditions concernant des touches uniques.
Ps: ce truc est en basic, je ne suis pas programmeur en C (pas encore), je pense que ça peut être utile en C.
Hors ligne
j'ajoute que le calcul: 30(Frac (Z/10))-4-((Int (Z/10))-6) donne la valeur de la touche chiffré en fonction de son numéro Z. Non valable pour le 0.
PS: est-ce qu'en C, c'est les mêmes numéro de touches ??
Hors ligne
euh, desoler de te decevoir, mais il est hyper connu 7 algo
connait ki l'on deja utiliser
Hors ligne
Oh oui c'est connu, mais il y a encore moyen d'améliorer ton algo la au-dessus:
'inutile de dire que 0->Z, Getkey le fait avec un Do-Lpwhile Do Getkey->Z LpWhile Not Z 1 Frac .1Z>.4=>0 Ans=>Frac .1Z<.2=>0 Ans=>Int .1Z<5=>0 LpWhile Not Ans
Et voila!
>> Iscache: encore une belle utilisation de Ans :!:
j'ai repris l'exemple pour les chiffres, mais c'est vrai que la formule général est plus efficace..
D'ailleurs je ne suis pas sur qu'elle soit correcte!
La vraie formule est
2-Int (Z/10)+30Frac (Z/10)
ou encore
2-Int .1Z+30Frac .1Z :!:
Hors ligne
Et puis de ttes facon, en basic, le moindre calcul ralentit a mort la boucle donc c pas si utile que ca
Hors ligne
c clair autant faire des boucles pas très surchargé, du moins si on prog en basic
Hors ligne
oui,
ms gageons ke l'utilisarion de Ans est parfois
hasardeuse
Hors ligne
> Iscache: Ca veut dire quoi ca? :P
Hors ligne
ca veut dire que l'utilisation de Ans est parfois hasardeuse
Hors ligne
Ca on avait compris, mais je voudrais bien que tu me dises pourquoi tu dis ca: tu penses a un prog en particulier?
Hors ligne
Non disons que des que tu fais un autre calcul...la valeur de Ans peut etre effacée...Mais aussi qu'en on fait un pxltest...ou d'autre fonctions encore...
Je pense que c pour ca qu'il dit qu'elle est hasardeuse
Hors ligne
Ouais mais qd on a l'habitude et qu'on sait exactement ce qui peut changer la valeur de Ans ca pose pas de problemes...
Hors ligne
oui, ms par rapport au list,
tu te souviens,
Hors ligne
Tu veux dire List->Mat ou le contraire?
Hors ligne
Ouais, dans le prog de Star Wars la, j'avais mis un Ans, tu l'as viré et t'as vu le résultat...
En général il vaut mieux éviter d'utiliser souvent une fonction qu'on ne connait pas bien.. ( surtout quand on l'utilise partout comme moi lol)
Hors ligne
POur ceux qui sont pas au courant, il s'agissait de ceci:
0->L Do Seq(22,X,1,7,1->List 1 ClrText " " Isz L Locate 1,1,"NIVEAU" Locate 8,1,L For 1-> To 7 " " Next 0->P 10->A 0->B~C For 1->P To 50 Isz C C=8=>1->C [color=red]Int 21Ran#+1 Ans->List 1[C [/color] Locate Ans,7,"<=>" " " Locate A,1,"8" C+1 Ans=8=>1 List 1[Ans If A=Ans Or A=Ans+1 Or A=Ans+2 Then Locate A,1,"PERDU" Stop IfEnd Getkey->Q Q=38=>A>1=>Dsz A Q=27=>A<21=>Isz A If Q=28 Then Locate 8,1,"PAUSE" Do LpWhile Getkey<>31 IfEnd Next LpWhile 1
Et IscaChe avait essayé de remplacer les lignes en rouge par ceci..
Int 21Ran#+1->List 1[C]
Mais il a pas regardé la suite :mrgreen:
Hors ligne
Ah exact ya une petite erreur!!
Faut faire gaffe avec Ans....
Dès qu'une fonction renvoie une valeur, Ans prends cette derniere!!!
Si vous vouler sauvegarder une valeur mieux vaut la stocker dans une variable!
Hors ligne
... je crois que t'as pas compris: mon prog était tout-a-fait correct, mais si le changement d'iscache paraissait naturel, ca fait completement planter la suite, et c'est bien normal
Hors ligne
alors là STOP, j'ai remplacer ces lignes après l'erreur,
et puis l'erreur venais du fait que Ans valait 22
ce qui est impossible avec
Int 21Ran#+1->List 1[C]
car la valeur maximale de cette formule est 21,
l'erreur venait du fait que Ans prenait la valeur qui allait
etre remplacer dans la liste
Hors ligne
eut, t pas au courant alors, fais un prog sur ta caltos
While Int 21Ran# +1=/=22 WhileEnd
et dis moi combien de temps ta caltos tourne,
du reste je viens d'avoir un mess d'erreur que j'avais jamais eu :
Undefinition Error Error No[42]
Hors ligne
mais si on le fait avec un goto et lbl, je suis sur que tu epuises les pile de ta caltos
Hors ligne
l'erreur vient du fait que faire
Int 21Ran#+1->List 1[C]
ne change pas la valeur de Ans justement, et que dans les 3 lignes qui suivent j'ai besoin de Ans avec sa nouvelle valeur!
Mais bon apres tout on s'en masse le cochonnet, c'était juste pour dire que Ans est très pratique et que ca marche impec quand on sait l'utiliser!
Hors ligne