文字とスペースについてのみ、C ++での文字列入力を検証します

Han Bui

『Starting Out with C ++』の第4章(if、elseを使用した意思決定)を読んでいるので、関数についてはまだ詳しく知りません。ここで私の問題は、ランナー名とそのタイマーの入力を入力して、1位、2位、3位にランク付けできるようにすることを求めています。

ランナーの名前の文字列の入力を文字とスペースのみとして検証するのに問題があります。ループまたはブールを使用することを考えていますが、それを配置する適切な方法がわかりません。

誰かが、コードの複数の行にステップを繰り返すことなく、この場合に最もよく使用できる関数を教えてもらえますか?長いバージョンのコードを事前に申し訳ありませんが、短縮する方法も探しています。

#include <iostream>
#include <string>
#include <iomanip> // for setw, setpresicion, control output
#include <cctype> // for getline, cin.

using namespace std;

int main()
{
    string runner1, runner2, runner3;
    double time1, time2, time3;


    cout << "Enter Runner 1 name: ";
    getline(cin, runner1);
    cout << "Enter Runner 2 name: ";
    getline(cin, runner2);
    cout << "Enter Runner 3 name: ";
    getline(cin, runner3);

    cout << runner1 << "'s finishing time: ";
    cin >> time1;
    while (!cin || (time1 < 0)){              //the # is negative
        cout << "Please enter a non-negative number!\n";
        cin >> time1;
    }
    cout << runner2 << "'s finishing time: ";
    cin >> time2;
    while (!cin || (time2 < 0)){              //the # is negative
        cout << "Please enter a non-negative number!\n";
        cin >> time2;
    }
    cout << runner3 << "'s finishing time: ";
    cin >> time3;
    while (!cin || (time3 < 0)){
        cout << "Please enter a non-negative number!\n";
        cin >> time3;
    }

    // This is for Rank1----------------------------
        cout << "1st place : ";
        if((time1 < time2)&&(time1 < time3))
        {
            cout << left << setw(5) << runner1 << " " << right
            << setw(5) << time1 << endl;
        }
        else if (time2 < time3){
            cout << left << setw(5) << runner2 << " " << right
            << setw(5)  << time2 << endl;
        }
        else {
            cout << left << setw(5) << runner3 << " " << right
            << setw(5) << time3 << endl;
        }
        //Rank2------------------------------------
        cout << "2nd place : ";
        if ((time1 < time2)&&(time3 < time1)){
            cout << left << setw(5) << runner1 << " " << right
            << setw(5) << time1 << endl;
        }
        else if ((time3 < time2)&&(time1 < time3)){
            cout << left << setw(5) << runner3 << " " << right
            << setw(5) << time3 << endl;
        }
        else {
            cout << left << setw(5) << runner2 << " " << right
            <<setw(5) << time2 << endl;
        }
        // RANK 3-----------------------------------
        cout << "3rd place : ";
        if ((time1 > time2)&&(time1 > time3)){
            cout << left << setw(5) << runner1 << " " << right
            << setw(5) << time1 << endl;
        }
        else if ((time1 < time3)&&(time3 > time2)){
            cout << left << setw(5) << runner3 << " " << right
            << setw(5) << time3 << endl;
        }
        else {
            cout << left << setw(5) << runner2 << " " << right
            <<setw(5) << time2 << endl;
        }



    return 0;
}
user10356313

このルーチンは検証を行います:

bool validateString(const std::string& s)
{
    for (const char c : s) {
        if (!isalpha(c) && !isspace(c))
            return false;
    }

    return true;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

c#は文字列入力を検証します

分類Dev

文字列入力を検証し、それをリストに連結します

分類Dev

正規表現と文字列分析を組み合わせて、文字列入力の検証に必要なパターンを指定します

分類Dev

文字列入力の検証

分類Dev

cの2次元配列で文字列入力を取得します

分類Dev

先頭のスペースについてのみリスト文字で「スペース」文字を表示する

分類Dev

jqueryは配列入力エラーを検証します

分類Dev

文字列入力検証の問題(C ++)

分類Dev

Javaでスペースなしのユーザー文字列入力を要求する

分類Dev

文字とスペースのみを許可してjqueryを検証する

分類Dev

C-いくつかの例外を除いて、大文字と数字の入力文字列にスペースを追加します

分類Dev

文字列入力を検証し、二重出力を返すためのメソッド

分類Dev

C、スペースまたはタブなしの文字列入力

分類Dev

PHPの文字列入力から特定の文字列を削除します

分類Dev

列に少なくとも1つのスペースが含まれ、スペース以外の文字が含まれていない行を検索します

分類Dev

fgetsからの文字列入力で文字を検索できません

分類Dev

Laravelが配列入力の検証を気にしないのはなぜですか?

分類Dev

少なくとも1つの特別な文字、数字、大文字と小文字でパスワードを検証できますが、ユーザーは4つのうち3つを許可するように入力しますか?

分類Dev

JS検証では、文字と特定の記号のみを許可し、入力を変更します

分類Dev

属性の文字列入力を受け入れ、整数をDBに格納し、APIで文字列を返します

分類Dev

フルネームを検証するJava Regexはスペースと文字のみを許可します

分類Dev

PHPのチェック文字列には、文字と数字とスペースのみが含まれています

分類Dev

BrentSearchは、文字列入力からルート、最小、最大を検索します

分類Dev

文字列で正規表現を使用して2つの単語間のスペースを検証する方法

分類Dev

Cの各テストケースの文字列入力をスキャンします

分類Dev

クライアント側でのみ、.jsp内の文字列入力の同等性をチェックしますか?

分類Dev

コンソールでデータを提供しているときに最初の文字列入力をスキップする

分類Dev

io:freadまたはio:readを使用してerlangにスペースを含む文字列入力を取得する方法

分類Dev

スペースの後に文字が見つからないことを含みます

Related 関連記事

  1. 1

    c#は文字列入力を検証します

  2. 2

    文字列入力を検証し、それをリストに連結します

  3. 3

    正規表現と文字列分析を組み合わせて、文字列入力の検証に必要なパターンを指定します

  4. 4

    文字列入力の検証

  5. 5

    cの2次元配列で文字列入力を取得します

  6. 6

    先頭のスペースについてのみリスト文字で「スペース」文字を表示する

  7. 7

    jqueryは配列入力エラーを検証します

  8. 8

    文字列入力検証の問題(C ++)

  9. 9

    Javaでスペースなしのユーザー文字列入力を要求する

  10. 10

    文字とスペースのみを許可してjqueryを検証する

  11. 11

    C-いくつかの例外を除いて、大文字と数字の入力文字列にスペースを追加します

  12. 12

    文字列入力を検証し、二重出力を返すためのメソッド

  13. 13

    C、スペースまたはタブなしの文字列入力

  14. 14

    PHPの文字列入力から特定の文字列を削除します

  15. 15

    列に少なくとも1つのスペースが含まれ、スペース以外の文字が含まれていない行を検索します

  16. 16

    fgetsからの文字列入力で文字を検索できません

  17. 17

    Laravelが配列入力の検証を気にしないのはなぜですか?

  18. 18

    少なくとも1つの特別な文字、数字、大文字と小文字でパスワードを検証できますが、ユーザーは4つのうち3つを許可するように入力しますか?

  19. 19

    JS検証では、文字と特定の記号のみを許可し、入力を変更します

  20. 20

    属性の文字列入力を受け入れ、整数をDBに格納し、APIで文字列を返します

  21. 21

    フルネームを検証するJava Regexはスペースと文字のみを許可します

  22. 22

    PHPのチェック文字列には、文字と数字とスペースのみが含まれています

  23. 23

    BrentSearchは、文字列入力からルート、最小、最大を検索します

  24. 24

    文字列で正規表現を使用して2つの単語間のスペースを検証する方法

  25. 25

    Cの各テストケースの文字列入力をスキャンします

  26. 26

    クライアント側でのみ、.jsp内の文字列入力の同等性をチェックしますか?

  27. 27

    コンソールでデータを提供しているときに最初の文字列入力をスキップする

  28. 28

    io:freadまたはio:readを使用してerlangにスペースを含む文字列入力を取得する方法

  29. 29

    スペースの後に文字が見つからないことを含みます

ホットタグ

アーカイブ