J'ai un clavier que j'utilise pour entrer des chiffres dans un microcontrôleur (ATMEGA32 AVR). L'utilisateur pourra entrer 1, 2 ou 3 chiffres, car j'ai défini la plage d'entrée sera [0-999]. Chacun de ces chiffres sera stocké dans une position d'un éventail d'entiers. p>
Donc, si mon tableau est défini comme int d [3] code> et que l'utilisateur entre dans, dans la séquence, 2, 6, 9, je aurai
d [0] == 2 code>,
d [1] == 6 code> et
d [2] == 9 code>. Maintenant, je veux faire un entier de ces chiffres
{2, 6, 9} code>:
valeur == 269 code>. Comment puis-je faire ça? P>
3 Réponses :
La réponse suivante devrait être applicable pour n'importe quelle langue. Ce serait assez simple, je vous conseillerais de formater les valeurs dans votre réseau un peu différemment. Je pense que ce serait plus facile si l'opérateur entre dans un numéro à un chiffre stocker comme étant le cas: Enfin après votre format, vous pouvez utiliser la logique suivante pour obtenir le numéro. Par exemple, si le tableau est Cela fonctionnerait si vous suivez les conseils de formatage que j'ai donné ci-dessus. P> {0, 0, 5} code>. Si c'était un nombre à deux chiffres, stockez-le comme:
{0, 5, 9} code>. Enfin, si l'opérateur entre dans un numéro à trois chiffres, stockez-le comme suit:
{5, 9, 2} code>. P>
arr = {5, 9, 8}; code> alors vous pouvez faire ce qui suit pour l'obtenir comme numéro: p>
arr [0] * 100 + arr [1] * 10 + arr [2] code> p>
Merci chéri. Vous voulez dire l'opérateur entré 0 0 5 au lieu de 5 ??? Je sais que cela fait un problème facile, mais c'est pourquoi le chef qui me fait coupler seulement et je ne pouvais pas dire que je ne peux pas faire cela permet de saisir 3 chiffres.
Vous pouvez le faire, mais pour une meilleure expérience utilisateur, vous voudrez que l'utilisateur n'entrera plus 5, puis dans votre code de code avec des zéros lors de la saisie de la matrice.
Est-ce que cela a du sens Aashkanpasha?
Je pense que mon erreur est une autre où. Le clavier () scanne mon clavier ..... t = clavier (); ...... alors quand je veux que je [i] = t est faux, je veux faire une arie par mes chiffres int. Que devrais-je faire?
Je suis désolé que je ne connaisse pas les méthodes exactes et que vous devrez donc consulter la documentation de ce que vous utilisez. Vous pouvez également poser une autre question à ce sujet. Si j'ai répondu à votre question originale sur la façon de créer un numéro entier des éléments de tableau, veuillez approuver la réponse. J'espère que cela vous aidera et désolé je ne pouvais pas être d'une aide plus d'aide!
@Aashkanpasha, veuillez fournir un code sur le clavier () ou commencer une nouvelle question. Nous ne pouvons pas vous aider si vous n'exprimez aucun code
@Abhinavvemulapalli répond à votre question. Votre erreur est un peu spécifique. S'il vous plaît élaborer
@Aashkanpasha: l'algorithme de base Si vous souhaitez écrire une boucle est Total = Total * 10 + chiffre code>. Ensuite, vous pouvez vous arrêter au premier non chiffre. Si vous avez déjà un tableau de
INT code>, vous ne pouvez pas dire la différence entre
1 code> et
100 code> sauf si vous utilisez une valeur sentinelle.
Vous pouvez créer le nombre itétimé en multipliant le chiffre avec la puissance de son unité correspondante.
Exemple: {2, 6, 9} peut être exprimé sous ((2 * 10 ^ 2) + (6 * 10 ^ 1 ) + (9 * 10 ^ 0)) p>
non, pow code> est absolument le mauvais outil pour faire cela
, évitez cette réponse deux fois si je pouvais
@Anttihaapala avec ma propre version pour obtenir des pouvoirs de 10, cela ne devrait pas être un problème. J'ai modifié la réponse. Je suppose que le bowvote n'est plus nécessaire
Vous avez deux problèmes à résoudre, non?
Je peux voir deux façons de résoudre le problème n ° 1: p>
Dans les deux cas, vous pouvez compter le nombre de chiffres que l'utilisateur a informé avant la sentinelle / Timeout. P>
Nous devons juste résoudre le problème n ° 2: p> Si vous avez enregistré vos chiffres dans le tableau à partir de l'index zéro, du chiffre le plus significatif au chiffre le moins significatif, la solution sera une chose comme ceci: P>
// note: n_digits and d come from the solution of the first problem int sum = 0; for (int i = 0; i < n_digits; ++i) { sum = sum*10 + d[i]; } // do whatever you need with the result printf("%d\n", sum);
C n'est pas c ++. Veuillez choisir la balise appropriée du code que vous écrivez et Modifier Votre Q. Également le formater à l'aide de Markdown.
Merci. Parce que le nombre peut être compris entre 0 et 999, cela ne fonctionne pas pour tous. Si l'opérateur entre 3 et 8 seulement. Ensuite, nous avons y = 380 pas 38 de cette façon. Ai-je raison??