C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

LEDライトの変更をカウントして、C++で数字を1つずつ表示します


正の数、たとえばnumが与えられ、タスクは、表示されるLEDライトの変化の数を1つずつ計算することです。最初はすべてのLEDがオフであり、文字列値に基づいて開始されると想定します。

この質問を解決するには、7セグメントディスプレイとは何か、そしてその機能を理解する必要があります。

7セグメントディスプレイとは

7セグメントディスプレイは、より複雑なドットマトリックスディスプレイの代わりに、画像、テキスト、または10進数の形式で情報を表示する方法を提供する出力ディスプレイデバイスです。これは、デジタル時計、基本的な計算機、電子メーター、および数値情報を表示するその他の電子デバイスで広く使用されています。これは、数値8のように組み立てられた発光ダイオード(LED)の7つのセグメントで構成されています。

LEDライトの変更をカウントして、C++で数字を1つずつ表示します

7セグメントディスプレイの動作

すべてのセグメントに電力が供給されると、数字の8が表示され、「g」の電力を切断すると、数字の0が表示されます。7セグメントディスプレイでは、異なるピンの電力(または電圧)を同時に、0から9までの数値の表示の組み合わせを形成できます。7セグメントディスプレイはXやZのようなアルファベットを形成できないため、アルファベットには使用できず、10進数の大きさの表示にのみ使用できます。ただし、7セグメントディスプレイはアルファベットA、B、C、D、E、およびFを形成できるため、16進数の表現にも使用できます。

LEDライトの変更をカウントして、C++で数字を1つずつ表示します

Input − num = “123 ”
Output − count is 5

説明 − 1を点灯するのに必要なLEDの合計は2、2を点灯するのに必要なLEDの合計は5、3を点灯するのに必要なLEDの合計は5です。したがって、表示に必要な変更の合計数は− 5

です。
Input − num = “576 ”
Output − count is 10

説明 − 5を点灯するために必要な合計LEDは5、7を点灯するために必要な合計LEDは3、6を点灯するために必要な合計LEDは6です。したがって、表示に必要な変更の合計数は:10

です。

以下のプログラムで使用されているアプローチは次のとおりです

  • 点灯する数値を定義する整数値の文字列を入力します

  • 文字列の桁ごとに整数値を返すlength()関数を使用して、指定された文字列の長さを計算します。

  • すべてのLED値を格納する配列を作成します。

  • 一時変数を取ります。たとえば、値を格納するtempを考えます。

  • iから1までのループを開始し、iが長さよりも短い

  • ループ内で、temp + abs([LED [str [i]-‘0’] --LED [n [i-1]-‘0’]);

    で温度を設定します。
  • カウントを返す

  • 結果を印刷します。

#include<iostream>
using namespace std;
int countled(string str){
   // number of LED required to display a digit
   int Led[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 };
   int len = str.length();
   // calculating the change
   int res = Led[str[0] - '0'];
   for (int i = 1; i < len; i++){
      res = res + abs(Led[str[i] - '0'] - Led[str[i - 1] - '0']);
   }
   return res;
}
int main(){
   string str = "123";
   cout <<"count is "<<countled(str);
   return 0;
}

出力

上記のコードを実行すると、次の出力が得られます-

count is 5

  1. C++で一意の桁を持つ数を数える

    非負の整数nがあるとします。一意の数字xを持つすべての数値をカウントする必要があります。xは0〜10^nの範囲です。したがって、数値nが2の場合、11、22、33、44、55、66、77、88、99なしで0から100までの数値を検索するため、結果は91になります。 これを解決するには、次の手順に従います- nが0の場合、1を返します n:=最小10およびn nが1の場合、10を返します ans:=9およびret:=10 2からnの範囲のiの場合 ans:=ans *(9 – i + 2) ret:=ret + ans retを返す

  2. C ++で数字の配列として表される数値に1を追加しますか?

    配列として表される数値は、数値の各桁を配列の1つの要素に格納します。配列の長さは、配列の桁数と同じです。つまり、4桁の数値の場合は長さ=3です。配列の各要素は1桁の数字です。数値は、最後の要素が数値の最下位桁を格納するように格納されます。そして、最初の要素は数値の最上位桁を格納します。たとえば、 番号-351932は{3,5,1,9,3,2}として保存されます この数に1を追加するには、配列の最後の要素に1を追加する必要があり、キャリーを伝搬する必要があるかどうかをチェックします。最後のビットの数値が9の場合、キャリーが伝搬され、最後の要素の値は0になります。 次にビットが伝搬されると、