2016-12-10 3 views
-2

Проверка ввода пользователя. Если введен неправильный ввод, он становится точным. Если введен правильный ввод, он должен быть снова введен для регистрации. Помогите?C++ If/Else loop problems

int deposit; 

cout << "How much do you want to deposit?" << endl; 
cin >> deposit; 

if (!(cin >> deposit)) { // If the input is not equal to the data type of 
         // deposit 
    cin.clear(); 
    cin.ignore(numeric_limits<streamsize>::max(), '\n'); 
    cout << "Invalid Input" << endl; 

} else { 
    while (infile >> u >> p >> b) { 
    if (checkUser == u) { 
     int newBalance; 
     cout << "Your amount of $" << deposit << " has been added to your account" 
      << endl; 
     int fileBalance; 
     stringstream convert(b); // object from the class stringstream 
     convert >> fileBalance; // the objects has the value of B and 
     newBalance = fileBalance + deposit; 
     outfile << checkUser << ' ' << checkPass << ' ' << newBalance << endl; 
    } else { 
     outfile << u << ' ' << p << ' ' << b << endl; 
    } 
    } 
} 
+1

Вы дважды вызываете депозит cin >>, поэтому вы ожидаете, что нужно ввести два номера. Кроме того, блок else не имеет закрывающей скобки. –

+0

@Holget Schmitz Спасибо! Ошибка новичка. – cparks10

ответ

1

Вы вводите вход в два раза, потому что вы идете через cin>>deposit по крайней мере дважды:

cout << "How much do you want to deposit?" << endl; 
cin >> deposit; 

if (!(cin >> deposit)) { 

Просто избавиться от первого cin:

cout << "How much do you want to deposit?" << endl; 
if (!(cin >> deposit)) { 

Кроме того, обратите внимание на установив clang-format с помощью редактора кода или IDE. Это делает ваш код привлекательным без усилий и поможет вам выявить ошибки. Там также онлайн версия доступна здесь: http://format.krzaq.cc/

0

Это потому, что здесь:

если ((CIN >> депозит)!)

вы повторно чтение из стандартного ввода. Когда вы сначала делаете cin>>deposit, вы уже сохранили значение в переменной, поэтому вам просто нужно проверить переменную deposit или все, что вы хотите сделать с вставленными данными.

Другой, более чистый, способ сделать это, чтобы избежать первого заявления cin>>deposit.

+0

спасибо! Я ценю это! – cparks10