-2
votes

Comment convertir un tableau de chiffres entier en une valeur entière?

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.

Donc, si mon tableau est défini comme int d [3] et que l'utilisateur entre dans, dans la séquence, 2, 6, 9, je aurai d [0] == 2 , d [1] == 6 et d [2] == 9 . Maintenant, je veux faire un entier de ces chiffres {2, 6, 9} : valeur == 269 . Comment puis-je faire ça?


2 commentaires

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??


3 Réponses :


1
votes

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: {0, 0, 5} . Si c'était un nombre à deux chiffres, stockez-le comme: {0, 5, 9} . Enfin, si l'opérateur entre dans un numéro à trois chiffres, stockez-le comme suit: {5, 9, 2} .

Enfin après votre format, vous pouvez utiliser la logique suivante pour obtenir le numéro. Par exemple, si le tableau est arr = {5, 9, 8}; alors vous pouvez faire ce qui suit pour l'obtenir comme numéro:

arr [0] * 100 + arr [1] * 10 + arr [2]

Cela fonctionnerait si vous suivez les conseils de formatage que j'ai donné ci-dessus.


8 commentaires

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 . Ensuite, vous pouvez vous arrêter au premier non chiffre. Si vous avez déjà un tableau de INT , vous ne pouvez pas dire la différence entre 1 et 100 sauf si vous utilisez une valeur sentinelle.



0
votes

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)) xxx


2 commentaires

non, pow 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



0
votes

Vous avez deux problèmes à résoudre, non?

  • problème n ° 1: détecter lorsque l'entrée est terminée li>
  • Problème n ° 2: Convertissez le tableau de chiffres en une seule valeur entière li> ul>

    Je peux voir deux façons de résoudre le problème n ° 1: p>

    1. finissez l'entrée avec une sentinelle. strong> - Votre clavier a-t-il quelque chose comme une touche entrée em>? li>
    2. Terminez l'entrée avec un délai d'attente. strong> - Démarrez une minuterie après chaque lecture. Un débordement peut indiquer que l'utilisateur a fini d'entrée. LI> ol>

      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);
      


0 commentaires