Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 4257
Réponses : 26
Type : discussion
Etat : réponses autorisées

Compter des caractères

doomsday le 11/10/2010 à 21:54
bonjour j'aimerais savoir si il existe un programme qui compte le nombre de caractères entrés( sauf les 0 après la virgule) et qui l'affiche.
Si oui est-ce que vous pouvez l'afficher.
merci d'avance
linkakro le 11/10/2010 à 23:01
Tes caractères sont-ils stockés dans une chaîne ?
Si oui : longueur(Chaîne1)->L
Si non : 1+int(log(X)) pour les entiers
Je cherche un algorithme valable pour la partie décimale.
doomsday le 12/10/2010 à 16:16
non ils ne sont pas sont pas dans une chaine mais quand je met la "fonction" que tu m'a donné et que j'essaie le programme sa met erreur étiquette
linkakro le 13/10/2010 à 00:17
Je ne peux pas avoir provoqué ce type d'erreur car c'est une formule de maths.
La seule erreur qui ne vient pas de la syntaxe, c'est lorsque X=0.

Et puis je pense évident que tu as placé un sto et choisi tes variables.
Persalteas le 13/10/2010 à 15:29
err étiquette, d'habitude, c'est du aux Lbl et Goto et autres Menu( je crois.
doomsday le 13/10/2010 à 16:32
ok et sinon on trouve où la chaine1?
Persalteas le 13/10/2010 à 16:37
[var][7][1]
doomsday le 14/10/2010 à 17:46
ok c'est bon mais quand j'entre la valeur de la chaine après sa me met erreur type donné et sinon quand je choisi la fonction pour les variables sa compte que les chiffres avant la virgule alors que je veux que sa compte tout(la virgule y compris) sauf les 0 inutiles après la virgule
doomsday le 14/10/2010 à 18:55
c'est bon sa marche(avec les chaines) mais sa compte les 0 inutiles, est-ce que quelqu'un sait comment on fait pour ne pas les compter?
Persalteas le 14/10/2010 à 19:49
avec une chaine, ce n'est pas possible, car la chaine est une variable de texte, et pas de valeur.
doomsday le 14/10/2010 à 19:59
dans ce cas comment faut-il faire?
Persalteas le 14/10/2010 à 20:28
ça marche pas, la formule que linkakro a donné?
doomsday le 14/10/2010 à 20:31
bah sa compte ni la virgule ni les chiffres après
j'ai trouver quelque chose:(partEnt(partDéc(log(X)))x[racine carré de]2xNombre de caractères après la virgule)+1
le +1 c'est pour compter la virgule mais justement on veut savoir le nb de caractères après la virgule donc je sais pas quoi faire
Persalteas le 14/10/2010 à 20:58
ouch!
bah, désolé mais moi non plus.
doomsday le 14/10/2010 à 22:04
sinon j'avais trouvé autre chose mais sa marche pas:on demande un chaine puis on la stocke dans une variable(donc les zéros inutiles disparaissent) puis on la restocke dans une chaine et après on fait longueur(chaine) et sinon linkaro t'as pas trouvé comment faire pour la partie décimale?
PS:quelqu'un peut me dire a quoi sert la fonction "log(" svp
linkakro le 15/10/2010 à 00:12
Ce que tu as tenté est une de mes plus grandes motivation d'envisager d'apprendre l'asm, et ce depuis longtemps.

Je rappelle que j'avais précisé que ma formule ne traîtait que les entiers.

J'ai conçu deux versions d'un prog complet, dont une qui est cappable de traîter le nombre de chiffres de la mantisse d'un nombre très grand ou très petit. Tu n'as sûrement besoin que de la première, je la poste.
Code
Prompt C
abs(C)->A
A->B
If iPart(A)=0
1->B
1+iPart(log(iPart(B)))->E
For(W,1,14
iPart(10fPart(A*10^(W-1)))->L1(W)
End
For(D,14,1,-1
If L1(D)ø0
Goto D
End
Lbl D
E+D->N
If D
N+1->N
If C<0
N+1->N
Disp N

Ce prog ne peut pas traîter plus de 14 chiffres à cause de la capacité mémoire des réels.
doomsday le 15/10/2010 à 18:31
merci il fonctionne bien et c'est pg si il ne traite que 14chiffres max mais il y a quelques fonctions que j'aimerais savoir ce qu'elles font: "log("; "abs"; "goto" et "lbl"
et encore merci pour le programme
Sangohan38 le 15/10/2010 à 20:08
La fonction logarithme décimale (appelée log10 ou log sur les caltos) est une fonction qui transforme les exposants en coefficients et les produits en additions et en posant log(1)=0. On augmente de 1 pour chaque unité de pls

Par exemple: log(10^3*30^45)=3log(10)+45log(30)=3*2+45*2log(3)

La courbe associée est:



La fonction abs sert à prendre la valeur absolue d'un nombre c'est à dire que le résultat est un nombre rationnel postif.

Par exemple, abs(-3.445)=3.445 mais on a aussi abs(3.445)=3.445.

La courbe associée est donc:



Les fonction lbl et goto servent à créer une boucle. En effet, la première définie le lieu de départ de la boucle et la seconde renvoie l'exécution du programme au début de la ligne qui suit le lbl (étiquette en anglais).
Bien sur, pour les utilisé, il faut donner un nom à ta boucle et cela peut être un chiffre (un nombre à deux chiffressur 82 STATS) ou une lettre (deux peuvent être misent sur 82 STATS).

J'espère que je ne t'ai pas ennuyer avec ces explications et qu'elles te serviront un jour.

Sangohan38
doomsday le 15/10/2010 à 21:48
ok merci je comprends mieux maintenant sauf pour:
Code

For(D,14,1,-1
If L1(D)ø0
Goto D
End
Lbl D
E+D->N

quand je remplace goto...lbl par repeat sa ajoute 1 a un nombre sans décimal alors j'aimerais bien savoir pourquoi?
et aussi:
Code
If D
N+1->N

c'est quoi la condition du If?
Persalteas le 16/10/2010 à 13:53
c'est la logique boléenne:

If D signifie If D existe, soit If D =/= 0

c'est un raccourci.
doomsday le 16/10/2010 à 17:17
ok merci
Prof-DeMath le 17/10/2010 à 22:07
Bonjour,
je suis professeur de math au lycée vinci et je remarque que la date de ce sujet correspond étrangement à c'elle ou j'ai donné un devoir maison demandant de faire un programme comptant les caractère d'une entrée sur une ti, ne devant pas compter les zéro après la virgule, et comptant la "," comme un caractère. Soupçonnant un élève, j'espère qu'à l'avenir il fera ces devoirs maison par lui même, au lieu de ce les faire faire par d'autre personnes. Je verrais bien sur les copies qui est cette personne, j'espère m’être trompé..

Cordialement.
Sangohan38 le 17/10/2010 à 22:46
Tiens, pour une fois que c'est un professeur qui viens et pas un élève.

A ce propos, je trouve intéressant qu'un prof essaye d'inculqué la programmation à ses élèves mais en général quand il donne à ses élèves un exercice, ils n'ont aucune indication d'où leur arrivée sur ce forum.

Et pendant que j'y pense, voila un programme pour compter les caractères d'un nombre (virgule comprise).
Code

Input "NOMBRE:",A
partEnt(A->B
partDéc(A->C
0->D
0->E
While 9*10^D<B
D+1->D
End
While 9*10^E<C
E+1->E
End
Output(2,1,"NOMBRE DE
Output(3,1,"CARACTERES:
Output(4,1,D+E+1


Sangohan38

PS: Ce prog n'a pas du tout été testé.
Akmdad le 21/10/2010 à 15:43
persalteas a écrit :
avec une chaine, ce n'est pas possible, car la chaine est une variable de texte, et pas de valeur.

bien sur que si, il faudrait
Code

0[sto]B
For(A,1,Longueur(Chaine1
If B=/=1
1+C[sto]C
If sous-chaine(Chaine1,A,1)=",
1[sto]B
End
Disp C
Rézus le 21/10/2010 à 16:42
Aaaah ! j'avais jamais compris ça,merci beaucoup persalteas ^^
Persalteas le 23/10/2010 à 13:26
t'as raison akmdad.
linkakro le 01/11/2010 à 00:47
Sangohan38, j'ai testé ton programme et c'était faux.

Ce programme-ci gère tous les réels en écriture normale.
Code
Prompt A
0->D
While fPart(C*10^(D
D+1->D
End
0->E
While iPart(B*10^(-E
E+1->E
End
Disp E+D+(A<=0)+(D!=0)