1

coutここでの問題は、ユーザーが文字列に数字を入力した場合、ユーザーが成績に文字列/文字を入力した場合と同じように、それが有効ではないという警告が表示されるルールを挿入する方法がわからないことです。どのように?私はそれを試してきましたが、式は機能しません。

int x, cstotal = 100, extotal = 150;

double scorecs, exscore, labtotala, labtotalb, total;

string mystr = "";

cout << "Compute for: " << "\n" << "1. Laboratory Grade " << "\n" << "2. Lecture Grade" << "\n" << "3. Exit" << "\n";
cout << "Please enter a number: ";
cin >> x;
switch (x) {
case 1:

    cout << "Compute for laboratory grade." << "\n";
    cout << "Enter Student Name: ";
    cin >> mystr;


    cout << "Good day, " << mystr << " . Please provide the following grades: " << "\n";
    cout << "CS Score: ";
    cin >> scorecs;

    cout << "Exam Score: ";
    cin >> exscore;


    labtotala = scorecs / cstotal * 0.6;
    labtotalb = exscore / extotal * 0.4;
    total = labtotala + labtotalb;
    cout << "Your Laboratory Grade is " << total * 100 << "\n";
    system("pause");
    break;
case 2:
    cout << "Compute for lecture grade." << "\n";
    cout << "Enter Student Name: ";
    cin >> mystr;
    cout << "Good day, " << mystr << " . Please provide the following grades: " << "\n";
    cout << "CS Score: ";
    cin >> scorecs;
    cout << "Exam Score: ";

    cin >> exscore;
    labtotala = scorecs / cstotal * 0.7;
    labtotalb = exscore / extotal * 0.3;
    total = labtotala + labtotalb;
    cout << "Your Lecture Grade is " << total * 100 << "\n";
    system("pause");
    break;
4

6 に答える 6

13

cinfailbit無効なタイプの入力を取得したときにa を設定します。

int x;
cin >> x;

if (!cin) {
    // input was not an integer
}

cin.fail()入力が有効かどうかを確認するために使用することもできます。

if (cin.fail()) {
    // input was not valid
}
于 2012-11-18T14:08:18.870 に答える
4

このようなものはどうですか:

std::string str;
std::cin >> str;

if (std::find_if(str.begin(), str.end(), std::isdigit) != str.end())
{
    std::cout << "No digits allowed in name\n";
}

上記のコードは文字列全体をループし、std::isdigit各文字を呼び出します。関数が任意の文字に対して true を返した場合std::isdigit、つまりそれが数字であることを意味std::find_ifし、文字列内の見つかった場所へのイテレータを返します。数字が見つからない場合は、end反復子が返されます。このようにして、文字列に数字が含まれているかどうかを確認できます。

C++11 標準では、使用できる新しいアルゴリズム関数も導入されましたが、基本的には上記のことを行います。代わりに使用できるものは次のstd::any_ofとおりです。

if (std::any_of(str.begin(), str.end(), std::isdigit))
{
    std::cout << "No digits allowed in name\n";
}
于 2012-11-18T14:08:16.313 に答える
3
    cout << "\n Enter number : ";
    cin >> ch;
    while (!cin) {
        cout << "\n ERROR, enter a number" ;
        cin.clear();
        cin.ignore(256,'\n');
        cin >> ch;
    }
于 2013-12-01T11:27:04.033 に答える
1

.fail()ストリームのメソッドを使用します。以下のようなもの: -

   cin >> aString;

  std::stringstream ss;
  ss << aString;
  int n;
  ss >> n;

  if (!ss.fail()) {
   // int;
  } else {
  // not int;
   }
于 2012-11-18T14:06:38.447 に答える
0
//this program really work in DEV c++
#include <iostream> 
using namespace std; 
int main()
{
    char input;
    cout<<"enter number or value to check"<<endl;
    cin>>input;
for(char i='a';i<='z';i++)
{
    if(input==i)
    {
        cout<<"character"<<endl;
        exit(0);
    }
}
for(int i=0;i<=1000;i++)
{
    if(input==i)
    {
        cout<<"number"<<endl;   
    }
}
}
于 2020-01-08T01:10:24.593 に答える