Maison  >  Article  >  développement back-end  >  Inverser un nombre en C++ en utilisant la pile

Inverser un nombre en C++ en utilisant la pile

王林
王林avant
2023-09-14 12:45:021382parcourir

Inverser un nombre en C++ en utilisant la pile

Nous recevons un nombre entier Num en entrée. Le but est de trouver l'inverse du nombre à l'aide de la pile.

Stack : - Une pile est une structure de données en C++ qui stocke les données de manière LIFO (Last in First Out). Les principales opérations de la pile sont :

Déclaration- : pile bâton; //stck est maintenant une variable de pile.

  • Trouver Top en utilisant top(). La fonction stck.top() renvoie la référence de l'élément supérieur dans le stck

  • Removing Top en utilisant pop(). La fonction supprime l'élément le plus haut du stck

  • Ajout d'un élément en haut à l'aide de push(). La fonction stck.push( value ) ajoute la valeur de l'élément dans la pile. La valeur doit être de type stck.

  • Vérifiez si staxk est vide en utilisant empty(). La fonction stck.empty() renvoie true si la pile est vide.

Exemples

Entrée − Num = 33267

Sortie − L'inverse du nombre est : 76233

Explication

Premier nous va poussez tous les éléments pour empiler

7 - 6 - 2 - 3 - 3 ← top

7 * 10000 + 6 * 1000 + 2*100 + 3*10 + 3*1 ←

= 70000 + 6000 + 200 + 30 + 3 ←

= 76233

Entrée − Num = 111000

Sortie − L'inverse du nombre est : 111

Explication

Nous allons d'abord pousser tous les éléments à empiler

0 - 0 - 0 - 1 - 1 - 1 ← top

0 * 100000 + 0 * 10000 + 0*1000 + 1*100 + 1*10 + 1*1 ←

= 0 + 0 + 0 + 100 + 10 + 1 ←

= 111

L'approche utilisée dans le programme ci-dessous est la suivante

Dans cette approche, nous allons d'abord prendre les restes du nombre saisi et pousser pour empiler et réduire le nombre de 10 jusqu'à ce que le nombre devienne 0. De cette façon, la pile sera remplie de en haut comme premier chiffre.

  • Prenez le numéro d'entrée Num.

  • Prenez la pile vide pour les entiers en utilisant stack stck.

  • La fonction pushDigts (int num1) prend num1 et l'ajoute à la pile avec le premier chiffre en haut.

  • Prenez rem comme variable.

  • À l'aide d'une boucle while, vérifiez si num1 est différent de zéro, si c'est vrai, définissez rem=num1%10.

  • Poussez rem pour empiler.

  • Réduisez num1 de 10 pour le 2ème chiffre et ainsi de suite.

  • Maintenant, inversez le nombre en utilisant les éléments de la pile avec la fonction revrseNum ( ).

  • Prenez les variables revrs, topp, temp, i.

  • Pendant que la pile n'est pas vide

  • Prenez l'élément le plus haut comme topp=stck.top().

  • Réduisez la pile en utilisant stck.pop().

  • Définissez temp=topp*i.

  • Ajoutez la température aux revrs.

  • Augmentez i de i*10 par multiples de 100.

  • À la fin, renvoyez le inverse du numéro d'entrée en tant que revrs.以下输出

    #include <bits/stdc++.h>
    using namespace std;
    stack <int> stck;
    void pushDigts(int num1){
       int rem;
       while (num1 > 0){
          rem=num1 % 10;
          stck.push(rem);
          num1 = num1 / 10;
       }
    }
    int revrseNum(){
       int revrs = 0;
       int i = 1;
       int temp;
       int topp;
       while (!stck.empty()){
          topp=stck.top();
          stck.pop();
          temp=topp*i;
          revrs = revrs + temp;
          i *= 10;
       }
       return revrs;
    }
    int main(){
       int Num = 43556;
       pushDigts(Num);
       cout<<"Reverse of number is: "<<revrseNum();
       return 0;
    }

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer