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

小さいユーザー名の例外を定義し、ユーザー名を検証するC++プログラム


ユーザー名の文字列があり、いくつかの条件に基づいてユーザー名が有効かどうかを確認する必要があるとします。したがって、ユーザー名の長さが5文字未満の場合にスローされる例外を定義する必要があります。有効なユーザー名の場合は「Valid」、無効なユーザー名の場合は「Invalid」を返し、小さいユーザー名の場合は例外をスローする必要があります。有効なユーザー名の条件は次のとおりです-

  • ユーザー名は5文字の長さである必要があります

  • ユーザー名に2つの連続した「w」があってはなりません

したがって、入力がunames =["amit"、 "to"、 "paul_tim"、 "greg_harry"、 "towwer"]の場合、出力は[Too short:4、Too short:2、Valid、Valid 、無効]最初の2つは小さすぎ、最後の1つには2つの連続した「w」があるため。その他は大丈夫です。

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

  • BadLengthExcaptionと呼ばれる例外を定義します

  • メッセージの長さを返します

  • 関数validation()を定義します。これにはu_nameが必要です

  • isValid:=true

  • n:=u_nameのサイズ

  • n <5の場合:

    • BadLengthException(n)をスローします

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

    • u_name[i]が'w'と同じで、u_name [i +1]が'w'と同じ場合、次のようになります。

      • isValid:=false

  • isValidを返す

  • メインの方法から、次の手順を実行します。

  • unamesのすべてのユーザー名u_nameについては、実行してください

    • validate(u_name)

    • 有効な場合は有効な印刷

    • それ以外の場合、無効な印刷が無効な場合

    • それ以外の場合、長さが小さい場合は印刷が小さすぎます

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

#include <iostream>
#include <vector>
#include <exception>
using namespace std;
class BadLengthException{
    public:
    int x;
    BadLengthException(int n) {
        x=n;
    }
    int what() const throw(){return x;}
};
bool validation(string u_name) {
    bool isValid = true;
    int n = u_name.length();
    if(n < 5) {
        throw BadLengthException(n);
    }
    for(int i = 0; i < n-1; i++) {
        if(u_name[i] == 'w' && u_name[i+1] == 'w') {
            isValid = false;
        }
    }
    return isValid;
}
int main() {
    vector<string> unames = {"amit", "to", "paul_tim", "greg_harry", "towwer"};
    for(int i = 0; i < unames.size(); i++){
        string u_name = unames[i];
        try {
            bool isValid = validation(u_name);
            if(isValid) {
                cout << "Valid" << '\n';
            } else {
                cout << "Invalid" << '\n';
            }
        } catch (BadLengthException e) {
            cout << "Too short: " << e.what() << '\n';
        }
    }
}

入力

{"amit", "to", "paul_tim", "greg_harry", "towwer"}

出力

Too short: 4
Too short: 2
Valid
Valid
Invalid

  1. C++での直方体の体積と表面積のプログラム

    直方体とは何ですか? 直方体は、長方形の6つの面を持つ3次元オブジェクトです。つまり、辺の長さと幅が異なります。立方体と直方体の違いは、立方体の長さ、高さ、幅が等しいのに対し、直方体ではこれら3つは同じではないことです 直方体の特性は次のとおりです- 6つの顔 12個のエッジ 8つの頂点 以下は立方体の図です 問題 長さ、幅、体積が与えられた場合、タスクは直方体の総表面積と体積を見つけることです。ここで、表面積は面が占めるスペースであり、体積は形状に含めることができるスペースです。 直方体の表面積と体積を計算するには、式があります 表面積=2(| * w + w * h

  2. QuickSort用のC++プログラム?

    クイックソートは、比較を使用してソートされていないリスト(配列)をソートするソート手法です。クイックソートは、パーティション交換ソートとも呼ばれます。 等しいソート項目の相対的な順序が保持されないため、安定したソートではありません。クイックソートは配列を操作できるため、ソートを実行するために少量の追加メモリが必要です。常に最悪の場合のパーティションを選択するわけではないことを除いて、選択ソートと非常によく似ています。したがって、選択ソートのより適切な形式と見なすことができます。 QuickSortは、最も効率的な並べ替えアルゴリズムの1つであり、配列を小さい配列に分割することに基づいていま