0
votes

Itérer un entier long puis ajouter le numéro à un tableau en C

Donc, je demande à l'utilisateur un numéro, stocké sous forme d'un long int , alors je veux faire une boucle et itérer que long int , obtenir tout Les numéros de position impairs dans un un tableau impair et tous les numéros de position même dans un même une matrice . J'essaie de résoudre le problème de crédit défini à partir de CS50 xxx

essentiellement, j'essaie d'obtenir ceci:

si long cc = 12345678912345 , alors même devrait être même [7] = {1, 3, 5, 7, 9, 2, 4} et impair doit être impair [7] = {2, 4, 6, 8, 1, 3, 5}

Je ne sais pas vraiment comment je pourrais itérer sur long cc pour ajouter le nombre spécifique J'ai besoin dans le tableau


1 commentaires

Bienvenue à cela. Veuillez prendre le Tour , lire Comment Demandez , et postez un exemple de reproductible minimal . Vous devez montrer un peu d'effort ici si vous attendez que quelqu'un vous aide. Merci.


3 Réponses :


0
votes

Vous pouvez utiliser le% de l'opérateur modulo pour obtenir chaque chiffre. L'opérateur modulo vous donne fondamentalement le reste, donc si vous le faites pour% 10, alors cela vous donnera le dernier chiffre. Donc, 123% 10 = 3. Ensuite, vous divisez le numéro de carte de crédit par 10 et répétez le processus pour obtenir le chiffre suivant. EX 123/10 = 12, puis 12% 10 est 2. Si vous faites une variable de compteur pour compter le nombre de fois que vous avez effectué la boucle, cela vous donnera la position. Si vous faites la position% 2, cela vous dira s'il est impair ou même.

while (CC > 0)
    digit = CC % 10
    if (position % 2 == 1) //it's odd

    else //its even
    
    CC = CC/10  //to prepare for next iteration of the loop
    position = position + 1  //position starts at right side of CC number


0 commentaires

0
votes

C'est assez facile, il suffit d'allouer deux matrices avec le nombre de numéros en CC en utilisant quelque chose comme xxx

puis calculez votre truc comme ceci: xxx


0 commentaires

0
votes

Le problème principal que vous avez est que les matrices en C ont une taille fixe, définie lors de leur création et que la taille ne peut pas être modifiée. Donc, il n'ya aucun moyen de "ajouter" à un tableau.

La façon habituelle de traiter est de créer une matrice avec une taille maximale (ou une capacité) et de suivre la partie "Utilisation" de la matrice avec une variable distincte (souvent appelé «taille»). À tout moment, les éléments de matrice de 0 à la taille-1 sont "utilisés" et valides, tandis que ceux de la taille à la capacité-1 sont "libres" et peuvent contenir des valeurs de déchets qui seront ignorées.

Étant donné que la matrice et la variable de taille sont si intimement liées, il est courant de les combiner dans une structure pour faciliter la gestion des choses: xxx

maintenant, vous pouvez initialiser un vide matricielle et vous pouvez ensuite ajouter à ce tableau avec xxx

bien sûr, cela finira par attribuer la Montant maximum pour chaque tableau, la limite doit donc être assez petite. Vous pouvez le rendre plus flexible en allouant le tableau sur le tas et en stockant la capacité de la matrice ainsi que la taille: xxx

mais cela nécessite plus de gestion à suivre lorsque le la matrice doit être redimensionnée ou libérée.


0 commentaires