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

クラステンプレートを使用してさまざまなアイテムを追加するC++プログラム


2つの整数、2つの浮動小数点数、および2つの文字列を追加できるクラスを作成するとします(文字列の追加は基本的に文字列を連結します)。最初の入力として、数値nを取ります。これは、n個の異なる操作があることを表します。各操作で、最初の項目はタイプ[int、float、string]であり、2番目と3番目は2つのオペランドです。したがって、各行には3つの要素が含まれます。それらを読み、前述のように操作する必要があります。

したがって、入力が次のような場合

5
int 5 7
int 6 9
float 5.25 9.63
string hello world
string love C++

その場合、出力は次のようになります

12
15
14.88
helloworld
loveC++

これを解決するには、次の手順に従います-

  • クラステンプレートを使用して、AddItemsというクラスを定義します。 add()とconcatenate()の2つの関数があります。 add()は整数と浮動小数点数を追加し、concatenate()は文字列を連結します。

  • メインの方法から、次のようにします

  • 初期化i:=0の場合、i

    • タイプ:=現在のタイプ

    • タイプが「float」と同じ場合、次のようになります。

      • 2つのオペランドe1とe2を取ります

      • アイテムe1を使用してmyfloatと呼ばれるfloat型のPASSWORDのオブジェクトを作成します

      • myfloat.add(e2)を呼び出して表示します

    • それ以外の場合、typeが "int"と同じ場合、次のようになります。

      • 2つのオペランドe1とe2を取ります

      • アイテムe1を使用してmyintと呼ばれるfloat型のPASSWORDのオブジェクトを作成します

      • myint.add(e2)を呼び出して表示します

    • それ以外の場合、タイプが「文字列」と同じ場合、次のようになります。

      • 2つのオペランドe1とe2を取ります

      • アイテムe1を使用してmystringと呼ばれるfloat型のPASSWORDのオブジェクトを作成します

      • mystring.concatenate(e2)を呼び出して表示します

理解を深めるために、次の実装を見てみましょう-

#include <iostream>
using namespace std;
template <class T>
class AddItems {
    T element;
  public:
    AddItems (T arg) {
        element=arg;
    }
    T add (T e2) {
        return element+e2;
    }
    T concatenate (T e2) {
        return element+e2;
    }
};
int main(){
    int n,i;
    cin >> n;
    for(i=0;i<n;i++) {
        string type;
        cin >> type;
        if(type=="float") {
            float e1,e2;
            cin >> e1 >> e2;
            AddItems<float> myfloat (e1);
            cout << myfloat.add(e2) << endl;
        }
        else if(type == "int") {
            int e1, e2;
            cin >> e1 >> e2;
            AddItems<int> myint (e1);
            cout << myint.add(e2) << endl;
        }
        else if(type == "string") {
            string e1, e2;
            cin >> e1 >> e2;
            AddItems<string> mystring (e1);
            cout << mystring.concatenate(e2) << endl;
        }
    }
}

入力

5
int 5 7
int 6 9
float 5.25 9.63
string hello world
string love C++

出力

12
15
14.88
helloworld
loveC++

  1. 特定の条件でグラフを作成するC++プログラム

    NとKの2つの数があるとします。N個の要素を持つ無向グラフがあるとします。 N個の頂点は次の条件を満たす- グラフはシンプルで接続されています 頂点には1からNまでの番号が付けられています グラフのエッジの数をMとします。エッジには1からMまでの番号が付けられます。エッジの長さは1です。エッジiは頂点U[i]を頂点V[i]に接続します。 頂点のペア(i、j)は正確にKペアあり、i

  2. C++で2つのバイナリ文字列を追加するプログラム

    2進数の文字列が2つある場合、それら2つの2進数文字列を加算して得られた結果を見つけ、その結果を2進数文字列として返す必要があります。 2進数は、0または1のいずれかで表される数値です。2つの2進数を加算する際には、2進数の加算規則があります。 0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0, carry 1 入力 str1 = {“11”}, str2 = {“1”} 出力 “100” 入力 str1 = {“110”},