C++でスタックを使用して数値を反転します
入力として整数Numが与えられます。目標は、スタックを使用して数値の逆数を見つけることです。
スタック :-スタックはC ++のデータ構造であり、データをLIFO(後入れ先出し)方式で格納します。スタックの主な操作は次のとおりです-:
宣言-:stack
-
top()を使用してトップを検索する 。関数stck.top()は、stckの最上位要素の参照を返します
-
pop()を使用してトップを削除する 。関数はstckから最上位の要素を削除します
-
push()を使用して要素を上部に追加する 。関数stck.push(value)は、スタックにアイテム値を追加します。値はstckタイプである必要があります。
-
empty()を使用して、staxkが空かどうかを確認します 。スタックが空の場合、関数stck.empty()はtrueを返します。
例
入力 −数値=33267
出力 −番号の逆は:76233
説明 −
まず、すべての要素をスタックにプッシュします
7-6 --2--3-3←トップ
7 * 10000 + 6 * 1000 + 2 * 100 + 3 * 10 + 3*1←
=70000 + 6000 + 200 + 30+3←
=76233
入力 −数値=111000
出力 −数の逆数は次のとおりです:111
説明 −
まず、すべての要素をスタックにプッシュします
0-0 --0-1--1-1←上
0 * 100000 + 0 * 10000 + 0 * 1000 + 1 * 100 + 1 * 10 + 1*1←
=0 + 0 + 0 + 100 + 10+1←
=111
以下のプログラムで使用されているアプローチは次のとおりです
このアプローチでは、最初に入力番号の余りを取り、スタックにプッシュして、番号が0になるまで番号を10減らします。このようにして、スタックは最初の桁としてトップで埋められます。
-
入力番号Numを取ります。
-
stack
stckを使用して整数の空のスタックを取得します。 -
関数pushDigts(int num1)は、num1を受け取り、最初の桁を上にしてスタックに追加します。
-
remを変数として取ります。
-
whileループを使用して、num1がゼロ以外であるかどうかを確認し、trueの場合は、rem =num1%10を設定します。
-
remをプッシュしてスタックします。
-
2桁目などはnum1を10減らします。
-
次に、関数revrseNum()を使用してスタックの要素を使用して数値を逆にします。
-
変数revrs、topp、temp、iを取ります。
-
スタックが空ではない間
-
最上位の要素をtopp=stck.top()として取得します。
-
stck.pop()を使用してスタックを減らします。
-
temp =topp*iを設定します。
-
revrsにtempを追加します。
-
iを100の倍数でi*10増やします。
-
最後に、入力した数値の逆を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; }
出力
上記のコードを実行すると、次の出力が生成されます
Reverse of number is: 65534
-
C++五胞体数
五胞体数は、パスカルの三角形の5番目の数として表されます。ご存知のように、これは5番目の数字です。つまり、パスカルの三角形に少なくとも5つの数字が必要です。したがって、このシリーズの最初の数字は 1 4 6 4 1から始まります。 パスカルの三角形の4行目。したがって、このチュートリアルでは、たとえば、n番目の五胞体数を見つける必要があります Input : 1 Output : 1 Input : 4 Output : 35 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと
-
C++を使用して停止ステーションの数を見つける
ポイントXとYの間にn個の中間駅があります。2つの駅が隣接しないように、s駅に停車するように列車を配置できるさまざまな方法の数を数えます。そのため、この記事では、停車駅の数を見つけるためのあらゆる可能なアプローチについて説明します。問題を見ると、sの駅数で列車を止めることができる組み合わせを見つける必要があることがわかります。 問題を解決するためのアプローチ 中間駅が8つあり、3つの中間駅で電車を止める方法を見つける必要がある例を見てみましょう。 n = 8, s = 3 (n-s)、つまり電車が止まらない駅が5つ残っています 電車が止まらないA、B、C、D、Eの5つの駅があります