VB.NET: Créer une base de 12
FerméUtilisateur anonyme - 24 juil. 2022 à 15:39
- VB.NET: Créer une base de 12
- Vb.net download - Télécharger - Langages
- VB Editor - Télécharger - Langages
- Tp vb.net + correction pdf ✓ - Forum VB / VBA
- Exercices + corrigés de Visual Basic - Forum VB / VBA
- Vb.net comment ✓ - Forum Framework .NET
6 réponses
24 juil. 2022 à 09:50
Bonjour
ce que tu décris n'est pas une base 12, c'est une soustraction.
Modifié le 24 juil. 2022 à 10:14
Une base 12 cela implique de choisir des caractères qui servent de chiffres pour les nombres décimaux 10, et 11. Car une base 12 veut dire 12 chiffres 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B.
Par convention, on utilise des lettres majuscules, donc 10 serait A et 11 serait B.
Quand ton textbox "reçoit" 12, le label devrait afficher "10", pour 13 "11", pour 14 "12" et pour 20 "18".
Rien à vois avec ce que tu décris.
24 juil. 2022 à 11:05
Je ne veux c'est 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 dans une rotation continuelle. 12 chiffres.
Quand j'entre 2 au textbox, mon label affiche 2. Normal.
Mais quand j'entre 12, qu'il soit converti en 0. 12/12=1 reste 0. Comment récupérer ce reste là en vb.net m'intéresse au plus au point. Svp ...
24 juil. 2022 à 11:07
Je te le dis depuis le début 12 - 12 = 0 => soustraction pas base 12.
Modifié le 24 juil. 2022 à 10:52
Absolument maths, c'est sûr.
Ce que je n'arrive pas à faire c'est la récupération du reste R quand je divise x (qui est supérieur à L le nombre total d'éléments) par L dans mon label.
24 juil. 2022 à 11:04
Avant de parler de reste, de R, x et L (qui veulent certainement dire quelque chose pour toi, mais pour moi c'est pas clair).
Il faut d'abord que tu expliques clairement ce que tu veut faire, car ça
Le label doit afficher 0 quand le textbox reçoit un 13, afficher 1 lorsque c'est 14 ou 7 quand c'est 20. En gros, tout nombre supérieur à 12 est récrit avec les nombres de 0 à 12.
C'est une soustraction pas une base 12
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié le 24 juil. 2022 à 12:13
Ne serais tu pas en train d'essayer de faire une horloge en mode "AM - PM" ?
Si oui, alors ça n'est pas vraiment une base 12 dans le sens où les demis journées ne sont pas comptées. (et dans l'absolu ça varie de 0 à 11 et pas de 1 à 12...)
En vraie base 12 serait, demi journée 0, heure 1, demi journée 1 heure 2 etc...
Ce que tu chercherais dans ce cas c'est un modulo.
Au bout de 13h, l'horloge affiche 1h, au bout de 25h elle affiche à nouveau 1h, au bout de 37h elle affiche encore 1h etc...
En maths, c'est 1h modulo 12
Idem pour les angles, 375°, 735° ou -345° c'est toujours 15° modulo 360.
L'opérateur modulo existe dans la majorité des langages (y compris en VB.Net), et dans les faits retourne le reste d'une division
Dim modulo As Integer = 13 Mod 12
24 juil. 2022 à 14:50
Oui une horloge.... un mod
Modifié le 24 juil. 2022 à 15:39
On se rapproche. Le terme cadence, métrique ou horloge paraît plus judicieux dans ce que je recherche et voici ce que ça donne.
Dim L As Integer = 12 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If Val(TextBox1.Text) >= L Then Label1.Text = CDbl(TextBox1.Text) Mod L ElseIf Val(TextBox1.Text) < L Then Label1.Text = TextBox1.Text End If End Sub
Et là, j'ai ce que je veux.
Pour utiliser correctement la coloration syntaxique https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
je corrige ton message précédent.
Tu n'as pas besoin de tester si la valeur est inférieure à 12 car Mod fonctionne même si c'est le cas et le résultat sera bon même si l'utilisateur saisit une valeur négative (contrairement à ton code actuel).
De plus les instructions Val ou CDbl ce n'est pas du VB.net, c'est un reste de VB6, le fait de les utiliser a tendance à ne pas aider au bon apprentissage, je te propose la lecture de la fin de cet article destiné initialement à ceux qui venaient de VB6 ou VBA https://codes-sources.commentcamarche.net/faq/11151-pourquoi-mon-code-vb6-vba-ne-marche-pas-en-vb-net#les-differences
Il est important de nommer les variables et les contrôles avec un nom fort, ce qui veut dire un nom qui permet d'identifier clairement le rôle de la variable et dans le cas d'un contrôle son type.
Et donc, je te propose ce code
Private Sub tbxSaisie_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbxSaisie.TextChanged lblHeure.Text = (Convert.ToInt32(tbxSaisie.Text) Mod L).ToString() End Sub